Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Asteriskβ„’: Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΠΈ Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 92

Автор Π”ΠΆΠΈΠΌ МСггСлСн

Queue(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AgentLogin(), queues.conf

ADSIProg()

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ADSI-сцСнарий Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ADSI

ADSIProg(сцСнарий)

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Analog Display Services Interface (ADSI), с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ сцСнария. Если сцСнарий Π½Π΅ Π·Π°Π΄Π°Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сцСнарий ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, asterisk.adsi. Для сцСнария указываСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Asterisk (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это /etc/asterisk/). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ.

Для получСния CPE ID ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ своСго ADSI-Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GetCPEID():

; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ ADSI-Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сцСнария telcordia-l.adsi exten => 123,1,ADSIProg(telcordia-1.adsi)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

GetCPEID(), adsi.conf

AgentCallbackLogin()

РСгистрация Π°Π³Π΅Π½Ρ‚Π° с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

AgentCallbackLogln([НомСрАгСнтa][,[ΠΎΠΏΡ†ΠΈΠΈ][,[Π΄ΠΎΠ±aΠ²ΠΎΡ‡Π½Ρ‹ΠΉΠ½ΠΎΠΌΠ΅Ρ€]@контСкст]])

Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π°Π³Π΅Π½Ρ‚Ρƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ НомСр- АгСнта, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² систСмС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈ поступлСнии Π²Ρ‹Π·ΠΎΠ²Π° для этого Π°Π³Π΅Π½Ρ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΊ Π½Π΅ΠΌΡƒ.

ΠŸΡ€ΠΈ поступлСнии Π²Ρ‹Π·ΠΎΠ²Π° для этого Π°Π³Π΅Π½Ρ‚Π° Asterisk Π·Π²ΠΎΠ½ΠΈΡ‚ Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ (с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ контСкстом).

АргумСнт ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ s, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ:

рСгистрируСтся Π² скрытом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ°ΠΊ Π°Π³Π΅Π½Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ 42 ΠΈ опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ поступлСнии Π²Ρ‹Π·ΠΎΠ²Π° для этого Π°Π³Π΅Π½Ρ‚Π° Asterisk Π±ΡƒΠ΄Π΅Ρ‚ Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ 123 Π² контСкстС internal exten => 123,1,AgentCallbackLogin(42,s, [email protected])

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‰Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π° Π½Π° AEL, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ doc/queues-with-callbackmembers.txt Π² ΠΏΠ°ΠΏΠΊΠ΅ исходного ΠΊΠΎΠ΄Π° Asterisk.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Queue(), AgentLogin(), AddQueueMember(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AGENT, agents.conf, queues.conf

AgentLogin()

РСгистрация Π°Π³Π΅Π½Ρ‚Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² систСмС

AgentLogin([НомСрАгСнта][, ΠΎΠΏΡ†ΠΈΠΈ])

РСгистрируСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° Π² систСмС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊΠ°ΠΊ Π°Π³Π΅Π½Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ НомСрАгСнта). ПослС рСгистрации Π°Π³Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал Π² Π»ΠΈΠ½ΠΈΠΈ ΠΏΡ€ΠΈ поступлСнии Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. АгСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ², Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ (*). Если НомСрАгСнта Π½Π΅ Π·Π°Π΄Π°Π½, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ввСсти свой Π½ΠΎΠΌΠ΅Ρ€ Π°Π³Π΅Π½Ρ‚Π°. АгСнты описаны Π² Ρ„Π°ΠΉΠ»Π΅ agents.conf.

АргумСнт ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρƒ s, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ:

; рСгистрируСм Π² скрытом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ ; Π°Π³Π΅Π½Ρ‚Π° Π½ΠΎΠΌΠ΅Ρ€ 42, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² agents.conf exten => 123,1,AgentLogin(42,s)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Queue(), AddQueueMember(), RemoveQueueMember(), PauseQueueMember(), UnpauseQueueMember(), AGENT, agents.conf, queues.conf

AgentMonitorOutgoing()

РСгистрируСт исходящиС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π°Π³Π΅Π½Ρ‚Π°

AgentMonitorOutgoing([ΠΎΠΏΡ†ΠΈΠΈ])

РСгистрируСт всС исходящиС Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π°Π³Π΅Π½Ρ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пытаСтся Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ID Π°Π³Π΅Π½Ρ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ исходящий Π²Ρ‹Π·ΠΎΠ², Π½Π° основании сравнСния Caller ID (ID звонящСго) Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ интСрфСйса ΠΈ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ AgentCallbackLogin(). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании (ΠΈ послС Π½Π΅Π³ΠΎ!) с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ AgentCallbackLogin(). Для записи Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Monitor(), Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для записи Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ² модуля chan_agent. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° записи Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконфигурирована Π² Ρ„Π°ΠΉΠ»Π΅ agents.conf. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ записанныС Π·Π²ΠΎΠ½ΠΊΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ /var/spool/ asterisk/monitor/. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° savecallsin Π² Ρ„Π°ΠΉΠ»Π΅ agents.conf.

Если Caller ID ΠΈ/ΠΈΠ»ΠΈ ID Π°Π³Π΅Π½Ρ‚Π° Π½Π° Π½Π°ΠΉΠ΄Π΅Π½, это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пСрСдаст ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ n + 1, Ссли ΠΎΠ½ сущСствуСт (Π³Π΄Π΅ n - Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚). Если это Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ, возвращаСтся 0. АргумСнт ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

d

Π’ случаС ошибки ΠΈ отсутствия Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° n + 101 ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -1.

c

ΠœΠ΅Π½ΡΠ΅Ρ‚ Call Detail Record (Π—Π°ΠΏΠΈΡΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π°) Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ источник Π²Ρ‹Π·ΠΎΠ²Π° записываСтся ΠΊΠ°ΠΊ АгСнт/id_Π°Π³Π΅Π½Ρ‚Π°.

НС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ прСдупрСТдСния, Ссли отсутствуСт Caller ID ΠΈΠ»ΠΈ ID Π°Π³Π΅Π½Ρ‚Π° нСизвСстСн. Π­Ρ‚Π° опция ΠΏΠΎΠ»Π΅Π·Π½Π°, Ссли Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ контСкст для Π·Π²ΠΎΠ½ΠΊΠΎΠ² Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π½Π΅-Π°Π³Π΅Π½Ρ‚ΠΎΠ².

; записываСм исходящиС Π·Π²ΠΎΠ½ΠΊΠΈ для этого Π°Π³Π΅Π½Ρ‚Π° ΠΈ мСняСм ; CDR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π²ΠΎΠ½ΠΎΠΊ выполняСтся Π°Π³Π΅Π½Ρ‚ΠΎΠΌ exten => 123,1,AgentMonitorOutgoing(c)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

AgentCallbackLogin(), agents.conf

AGI()

ВыполняСт совмСстимоС с AGI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

[E]AGI(ΠΏΡ€ΠΎΠ³Ρ€aΠΌΠΌa[, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹])

ВыполняСт для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ с Asterisk Gateway Interface ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. AGI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСшним ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны практичСски Π½Π° любом языкС программирования) ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»ΠΎΠΌ связи ΠΏΡƒΡ‚Π΅ΠΌ воспроизвСдСния Π°ΡƒΠ΄ΠΈΠΎΡ„Π°ΠΉΠ»ΠΎΠ², чтСния DTMF-сигналов ΠΈ Ρ‚. Π΄. Asterisk обмСниваСтся ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с AGI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π° STDIN ΠΈ STDOUT. Π—Π°Π΄Π°Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² AGI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’ качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ исполняСмый Ρ„Π°ΠΉΠ» ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти Π² ΠΏΠ°ΠΏΠΊΡƒ AGI Asterisk, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это /var/lib/asterisk/agi-bin/. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ AGI, ΠΊΠΎΠ³Π΄Π° Π½Π΅ сущСствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° (ΠΊΠ°ΠΊ для Π΄ΠΎΠ±Π°Π²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° h), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ DeadAGI(). Если трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ AGI ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAGI().

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ доступ ΠΊ входящСму Π°ΡƒΠ΄ΠΈΠΎΠΏΠΎΡ‚ΠΎΠΊΡƒ ΠΈΠ· своСй AGI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, вмСсто AGI() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ EAGI(). Π’ΠΎΠ³Π΄Π° входящий Π°ΡƒΠ΄ΠΈΠΎΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π² дСскриптор Ρ„Π°ΠΉΠ»Π° 3. Если происходит ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Ρ‹Π² соСдинСния, процСссу, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ AGI, Π±ΡƒΠ΄Π΅Ρ‚ послан сигнал HUP, ΠΈΠ·Π²Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ соСдинСния. Если ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ этот сигнал, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π·Π°Π΄Π°Π² для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°Π½Π°Π»Π° AGISIGHUP Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0: ; Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ AGI-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ exten => 123,1,AGI(agi-test) exten => 123,2,EAGI(eagi-test)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

DeadAGI(), FastAGI(), Π³Π»Π°Π²Ρƒ 9

AlarmReceiver()

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для получСния сигналов с ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΡ…Ρ€Π°Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠΆΠ°Ρ€Π½ΠΎΠΉ сигнализации

AlarmReceiver()

Π­ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ сигналов Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΈ ΠΈ позволяСт Asterisk ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ ΠΏΠΎΠΆΠ°Ρ€Π½ΠΎΠΉ ΠΈ/ΠΈΠ»ΠΈ ΠΎΡ…Ρ€Π°Π½Π½ΠΎΠΉ сигнализации. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ademco Contact ID.

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹ΠΌ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ AlarmReceiver() ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ установлСниС связи с панСлью сигнализации, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ события, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° панСль Π½Π΅ Ρ€Π°Π·ΠΎΡ€Π²Π΅Ρ‚ соСдинСниС. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ панСль Ρ€Π°Π·ΠΎΡ€Π²Π΅Ρ‚ соСдинСниС, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ строку ΠΊΠΎΠΌΠ°Π½Π΄, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ настройкой eventcmd Π² Ρ„Π°ΠΉΠ»Π΅ alarmreceiver.conf, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ события Π½Π° стандартный Π²Π²ΠΎΠ΄ прилоТСния. Π€Π°ΠΉΠ» alarmreceiver.conf Ρ‚Π°ΠΊΠΆΠ΅ содСрТит настройки синхронизации DTMF ΠΈ громкости Ρ‚ΠΎΠ½ΠΎΠ² подтвСрТдСния ΠΏΡ€ΠΈΠ΅ΠΌΠ°. ; настраиваСм Asterisk, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π»Π° Π½Π° Π²Ρ‹Π·ΠΎΠ²Ρ‹ ; ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΠΎΠΆΠ°Ρ€Π½ΠΎΠΉ сигнализации exten => s,1,AlarmReceiver()

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ этого прилоТСния Π½Π΅ гарантируСтся, поэтому Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π³ΠΎ Π±Π΅Π· всСстороннСго тСстирования. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· тСстирования, Π²Ρ‹ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π΅Ρ‚Π΅ свою Тизнь ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ большой опасности.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

alarmreceiver.conf

AMD()

ВыявлСниС Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠ°

AMD([initialSilence[,greeting[,afterGreetingSilence[,totalAnalysisTime[, minimumUordien gth[,betweenUordsSilence[, maximumNumberOfUords[, silenceThreshold]]]]]]]])

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пытаСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠ° Π½Π° основании шаблонов синхронизации. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ исходящими Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΌΠΈ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΈΠ»ΠΈ Π² интСрфСйсС Asterisk Manager. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сообщаСт, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²Ρ‹Π·ΠΎΠ²Π° Π±Ρ‹Π» выявлСн, задавая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ AMDSTATUS ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: MACHINE (машина)

БчитаСтся, Ρ‡Ρ‚ΠΎ вызываСмая сторона являСтся Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ. HUMAN (Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ)

БчитаСтся, Ρ‡Ρ‚ΠΎ вызываСмая сторона являСтся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π° Π½Π΅ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ.

NOTSURE (Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½)

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ смогло ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ вызываСмая сторона Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ.

HANGUP (Ρ€Π°Π·Ρ€Ρ‹Π²)

Π’ процСссС опрСдСлСния ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» Ρ€Π°Π·Ρ€Ρ‹Π² соСдинСния. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ AMD() Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°Π½Π°Π»Π° AMDCAUSE ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, Π½Π° основании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ дСлаСтся Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ AMDSTATUS. Для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ AMDCAUSE Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: TOOLONG-ΠΎΠ±Ρ‰Π΅Π΅_врСмя

INITIALSILENCE-ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ_ΠΏΠ°ΡƒΠ·Ρ‹-Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ_ΠΏΠ°ΡƒΠ·Π° HUMAN-ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ_ΠΏΠ°ΡƒΠ·Ρ‹-ΠΏΠ°ΡƒΠ·Π°_послС_привСтствия MAXWORDS-количСство_слов-максимальноС_число_слов LONGGREETING-ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ_Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°-привСтствиС ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Asterisk ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, описанныС Π² amd.conf. К этим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ относятся: