FreePBX. Настройка Asterisk для e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… входящих Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

FreePBX. Настройка Asterisk для e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… входящих Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
IP ATC Asterisk β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ Π² области IP-Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΠΈ. А web-интСрфСйс FreePBX, созданный для Asterisk, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ настройку ΠΈ сниТаСт ΠΏΠΎΡ€ΠΎΠ³ вхоТдСния Π² систСму.
Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°Ρ‡Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с IP-Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΠ΅ΠΉ, Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Asterisk. Но Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ вас потрСбуСтся упорство ΠΈ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠ°.

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ встала Π·Π°Π΄Π°Ρ‡Π° Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ e-mail увСдомлСния ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ…. Π’ΠΎΡ‡Π½Π΅Π΅ говоря, ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· e-mail ΠΎ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° входящий Π²Ρ‹Π·ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΡˆΡ‘Π» Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½ΠΎ Π½ΠΈΠΊΡ‚ΠΎ (ΠΈΠ· Π°Π³Π΅Π½Ρ‚ΠΎΠ²) Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π½Π° этот входящий Π²Ρ‹Π·ΠΎΠ².

На ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… срСдств для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π²ΠΎ FreePBX. О Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ эту Π·Π°Π΄Π°Ρ‡Ρƒ, расскаТу ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ Β«Π² Π»ΠΎΠ±Β» ΠΌΡ‹ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ поискали ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΊΠ»ΡŽΡ‡ Π½Π΅ нашли (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ искали, Π½ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΅Π»Π°Π΅ΡˆΡŒβ€¦ ).

Навыков Ρ€Π°Π±ΠΎΡ‚Ρ‹ нСпосрСдствСнно Π² Asterisk Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, поэтому Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ здСсь, Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° осмыслСно ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ.

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ здСсь, Ρ…ΠΎΡ‚ΡŒ ΠΎΠ½ΠΎ ΠΈ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ. ΠžΡ‚ΡΡŽΠ΄Π° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Asterisk Π½ΡƒΠΆΠ½ΠΎ Π² контСкстС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ [ext-queues]. И Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π²ΠΎ Freepbx, Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Β«extensions_override_freepbx.confΒ». ΠžΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Β«Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹Β» ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ событиСм hangupcall (ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π°).
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² обсуТдСниС здСсь, появилась идСя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π² CDR ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«DispositionΒ» ΠΏΠΎ всСм Π°Π³Π΅Π½Ρ‚Π°ΠΌ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. А послС прочтСния этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ шаги ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ.

Π§Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ:

Π•ΡΡ‚ΡŒ FreePBX 13.0.197, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Asterisk 13.12.1. ВСрсия ОБ SHMZ release 6.6 (Final). Дистрибутив базируСтся Π½Π° CentOS.

Π’ Asterisk настроСн IVR (голосовоС мСню) Ρ€Π°ΡΠΊΠΈΠ΄Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ входящиС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ Queues (ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ). КаТдой ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Agents (Π°Π³Π΅Π½Ρ‚Ρ‹), Ρ‚. Π΅. ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ВСория

Π§Ρ‚ΠΎ происходит Π² Asterisk

Когда Π½Π° Asterisk поступаСт входящий Π²Ρ‹Π·ΠΎΠ², этот Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° IVR. Звонящий Π΄Π΅Π»Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€, Π½Π°ΠΆΠ°Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅, ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. ПослС этого всСм свободным Π°Π³Π΅Π½Ρ‚Π°ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ поступаСт Π·Π²ΠΎΠ½ΠΎΠΊ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈ Ρ‡Ρ‚ΠΎ происходит дальшС, обратимся ΠΊ Report CDR (Рис.1).

FreePBX. Настройка Asterisk для e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… входящих Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
Рис.1

Когда входящий Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠΏΠ°Π» Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρƒ всСх Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«DispositionΒ» стало Ρ€Π°Π²Π½Ρ‹ΠΌ Β«NO ANSWERΒ», Ссли Π°Π³Π΅Π½Ρ‚Ρ‹ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π»ΠΈ Π½Π΅ заняты. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Β«DispositionΒ» ΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния (см. https://asterisk-pbx.ru/wiki/asterisk/cf/cdr), ΠΊΡ€ΠΎΠΌΠ΅ значСния Β«ANSWEREDΒ». А Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Π³Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° входящий Π²Ρ‹Π·ΠΎΠ², Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«DispositionΒ» этого Π°Π³Π΅Π½Ρ‚Π° становится Ρ€Π°Π²Π½ΠΎΠΉ Β«ANSWEREDΒ».
Из Report CDR ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ (Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ App Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ становится Ρ€Π°Π²Π½Ρ‹ΠΌ Β«QueueΒ»), Ρ‚ΠΎ всС события Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Β«uniqueidΒ» (ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° System).

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ CDR

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ CDR, ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² CDR заносятся Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ наблюдаСм Π² Report CDR. CDR, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы β€” это Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Asterisk записываСт Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (см. https://asterisk-pbx.ru/wiki/asterisk/cf/cdr). Π’ нашСм случаС это Π±Π°Π·Π° ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ asteriskcdrdb, которая находится Π² mysql. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΡ‹ установили, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Β«uniqueidΒ» заносятся Π² asteriskcdrdb Π½Π΅ сразу послС возникновСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ события, Π° послС события hangupcall (ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π°).

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ созданного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² bash большС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² Asterisk, Ρ‚ΠΎ основная идСя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ событиСм hangupcall Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ bash-скрипт. Π’ этот скрипт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ 3 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«uniqueidΒ», для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· CDR. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«CALLERID(num)Β» (Π½ΠΎΠΌΠ΅Ρ€ звонившСго), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«NODESTΒ» (Π½ΠΎΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ), Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ поступил Π·Π²ΠΎΠ½ΠΎΠΊ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ вопросу Π±Ρ‹Π» Π·Π²ΠΎΠ½ΠΎΠΊ, ΠΈ ΠΊΠΎΠΌΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅.
Bash-скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ asteriskcdrdb Π² mysql ΠΈ Π²Π·ΡΡ‚ΡŒ всС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«DispositionΒ» с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Β«uniqueidΒ». Из ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ значСния: Β«NO ANSWERΒ», Β«BUSYΒ», Β«FAILEDΒ», Β«UNKNOWNΒ». Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ останутся Π»ΠΈΠ±ΠΎ Β«ANSWEREDΒ» β€” Π½Π° входящий Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ, Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈ Ρ‡Π΅Π³ΠΎ β€” ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ².

Π”Π°Π»Π΅Π΅, Ссли Π²Ρ‹Π·ΠΎΠ² оказался ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎ скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
ЗабСгая Π²ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Asterisk выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, доТидаясь ΠΈΡ… выполнСния (Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ). А Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ bash-скрипт ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выполнится ΠΊΠΎΠΌΠ°Π½Π΄Π° hangupcall. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ нСпосрСдствСнного выполнСния скрипта, Π² CDR Π΅Ρ‰Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ внСсСна информация ΠΎΠ± искомом Π½Π°ΠΌΠΈ Β«uniqueidΒ». Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ bash-скрипт ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Β«&Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Asterisk сразу ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ шага, Ρ‚. Π΅. hangupcall. А Π²Π½ΡƒΡ‚Ρ€ΠΈ bash-скрипта, Π² самом Π½Π°Ρ‡Π°Π»Π΅, ΠΌΡ‹ установим Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ врСмя для Asterisk внСсти Π΄Π°Π½Π½Ρ‹Π΅ с ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΌ нас Β«uniqueidΒ» Π² CDR.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ настройкС Asterisk ΠΈ созданию bash-скрипта, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. Для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ postfix.

Настройка postfix

Π£ нас Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½ Β«lucky.ruΒ», располоТСнный Π² ЯндСксС. ΠœΡ‹ настроим postfix Π² Ρ€Π΅ΠΆΠΈΠΌ smtp-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ письма с Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° [email protected].
Π—Π° основу взято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΡΡŽΠ΄Π°: https://www.dmosk.ru/miniinstruktions.php?mini=postfix-over-yandex.

Π‘Π½Π°Ρ‡Π°Π»Π° установим/ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ/ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

yum install postfix
yum install mailx
yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

НС Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Ρ‚ΠΈΡ€Π°Ρ‚ΡŒ основной Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ postfix Β«/etc/postfix/main.cfΒ», Π° создадим Π΅Π³ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию:

cp /etc/postfix/main.cf /etc/postfix/main.cf.sav

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» Β«/etc/postfix/main.cfΒ» ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ:

nano /etc/postfix/main.cf
#####################
relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/private/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/private/sender_relay
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_CAfile = /etc/postfix/ca.pem
smtp_use_tls = yes
smtputf8_autodetect_classes = all
#####################

НС ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π² Β«/etc/postfix/main.cfΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строках Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ парсСром ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π° это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам. Π›ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ„Π°ΠΉΠ»Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с этим запустив Π² сосСднСм ΠΎΠΊΠ½Π΅ Β«tail -f /var/log/messagesΒ».

ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ строку Β«smtputf8_autodetect_classes = allΒ». Π­Ρ‚Π° запись Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ utf-8 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ ΠΈ Π² Ρ‚Π΅Π»Π΅ письма, ΠΈ Π² Ρ‚Π΅ΠΌΠ΅ письма Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… манипуляций (Π‘ΠΌ. http://www.postfix.org/SMTPUTF8_README.html).

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ:

mkdir /etc/postfix/private

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» Β«/etc/postfix/private/sender_relayΒ». Π’ Π½Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ smtp-сСрвСр Π½ΡƒΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ использовании нашСго ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°:

nano /etc/postfix/private/sender_relay
#####################
@lucky.ru smtp.yandex.ru
#####################

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» Β«/etc/postfix/private/sasl_passwdΒ». Π’ Π½Π΅ΠΌ ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ e-mail адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ писСм, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ этой ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи (Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅):

nano /etc/postfix/private/sasl_passwd
#####################
[email protected] [email protected]:password_asterisk
#####################

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» Β«/etc/postfix/genericΒ». Π’ Π½Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ исходящСго адрСса (см. https://wiki.merionet.ru/ip-telephoniya/30/postfix-nastrojka-otpravki-pochty-v-asterisk/):

nano /etc/postfix/generic
#####################
root [email protected]
root@localhost [email protected]
[email protected] [email protected]
root@freepbx [email protected]
[email protected] [email protected]
root@asterisk [email protected]
[email protected] [email protected]
asterisk [email protected]
asterisk@localhost [email protected]
[email protected] [email protected]
asterisk@freepbx [email protected]
[email protected] [email protected]
asterisk@asterisk [email protected]
[email protected] [email protected]
[email protected] [email protected]
#####################

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ исходящий адрСс зависит ΠΎΡ‚ содСрТимого Β«/etc/hostsΒ» ΠΈ Β«/etc/hostnameΒ», Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ письмо. Π’. Π΅. Π½Π΅ смотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ smtp-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ отправляСм письма ΠΎΡ‚ [email protected], всС Ρ€Π°Π²Π½ΠΎ Π² адрСс отправитСля postfix ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ подставит Β«Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ своё» ΠΈ это Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈΠ· этого Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ содСрТимоС своСго Ρ„Π°ΠΉΠ»Π° Β«/etc/hostsΒ»:

cat /etc/hosts
#####################
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 asterisk.localdomain
127.0.0.1 localhost.localdomain localhost
::1 asterisk localhost localhost6
#####################

Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвСр ΠΈΠΌΠ΅Π» ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΌΠ΅Π½ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС Ρ‚ΠΎΡ‡ΠΊΠΈ), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° mail Β«ΠΈΡ‰Π΅Ρ‚Β» имя Π΄ΠΎΠΌΠ΅Π½Π° Π² Β«/etc/hostsΒ» ΠΈ Ссли Β«Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Β» Π΅Π³ΠΎ сразу, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΅Ρ‰Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ письмо. Π’. Π΅. Ссли Π΄ΠΎΠΌΠ΅Π½ Π½Π΅ прописан, Ρ‚ΠΎ письмо Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² нСсколько ΠΌΠΈΠ½ΡƒΡ‚.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ содСрТимоС своСго Ρ„Π°ΠΉΠ»Π° Β«/etc/hostnameΒ»:

cat /etc/hostname
#####################
asterisk
#####################

Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСвСсти созданныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² индСксированныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

postmap /etc/postfix/generic && postmap /etc/postfix/private/{sasl_passwd,sender_relay}

Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° сСрвСрС сСртификат smtp.yandex.ru, для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

openssl s_client -starttls smtp -crlf -connect smtp.yandex.ru:25 > /etc/postfix/ca.pem

Но послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° экран Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ тСхничСская информация ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²ΠΈΡΠ΅Ρ‚ΡŒΒ». НаТмитС Ctrl+C Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΅Ρ‘.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Ρ„Π°ΠΉΠ»Π° вСсь мусор ΠΈ оставим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сСртификат. Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅:

nano /etc/postfix/ca.pem
#####################
-----BEGIN CERTIFICATE-----
MIIGazCCBVOgAwIBAgIQcUU9mJXW4OUs5Gf0JfLtsjANBgkqhkiG9w0BAQsFADBf
...
nRG0DfdqYIuPGApFORYe
-----END CERTIFICATE-----
#####################

И Π½Π°ΠΊΠΎΠ½Π΅Ρ† пСрСзапустим postfix:

service postfix restart

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ тСстовоС письмо:

echo "Π­Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ письма" | mail -s "Π­Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ°" [email protected]

[email protected] β€” адрСс назначСния

На этом настройка posfix Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°.

ПишСм bash-скрипт

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для хранСния bash-скрипта (Ρ‚ΡƒΡ‚ ΠΊΠΎΠΌΡƒ Π³Π΄Π΅ большС нравится):

mkdir /home/asterisk/scripts

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» bash-скрипта:

touch /home/asterisk/scripts/noanswer.sh

Π’Ρ‹Π΄Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρƒ скрипта ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:

chmod +x /home/asterisk/scripts/noanswer.sh

Если Π΅ΡΡ‚ΡŒ сомнСния Π² ΠΏΡ€Π°Π²Π°Ρ… Π½Π° Ρ„Π°ΠΉΠ», Ρ‚ΠΎ Π½Π° врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. Но это Β«Π½Π΅ бСзопасно».

chmod 777 /home/asterisk/scripts/noanswer.sh

ВСкст bash-скрипта:

nano /home/asterisk/scripts/noanswer.sh
#####################
#!/bin/bash

sleep 7

res_sql="SELECT disposition FROM cdr WHERE uniqueid = '$1'"

answer=`mysql -u freepbxuser -pPassword_freepbxuser -D asteriskcdrdb -B -N -e "$res_sql" | grep -E -v "NO ANSWER|BUSY|FAILED|UNKNOWN" | head -n 1`

error_kod=0
if [ "$answer" != "ANSWERED" ]
then

 case $3 in
 68800)
 address="[email protected]"
 subject="ΠΏΠΎ Π²Π°ΠΆΠ½ΠΎΠΌΡƒ вопросу"
 ;;
 63100)
 address="[email protected]"
 subject="ΠΏΠΎ вопросам linux debian"
 ;;
 63200)
 address="[email protected]"
 subject="ΠΏΠΎ вопросам windows"
 ;;
 63300)
 address="[email protected]"
 subject="ΠΏΠΎ вопросам freebsd"
 ;;
 63400)
 address="[email protected]"
 subject="ΠΏΠΎ вопросам linux ubuntu"
 ;;
 63500)
 address="[email protected]"
 subject="ΠΏΠΎ вопросам linux centos"
 ;;
 *)
 address="[email protected]"
 error_kod=1
 ;;
 esac

 case $error_kod in
 0)
 echo "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° $2, звонившСго $subject." | mail -s "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ $2" $address
 echo "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² для $address ΠΎΡ‚ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° $2, звонившСго $subject. uid=$1" | mail -s "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ $2" [email protected]
 ;;
 1)
 echo "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ $2. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ нСизвСстна. uid=$1" | mail -s "ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ $2" [email protected]
 ;;
 esac

fi
#####################

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ Ρ€Π°Π·Π±ΠΎΡ€ скрипта:
Β«sleep 7Β»:

Π­Ρ‚ΠΎ Ρ‚Π° самая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я писал Ρ€Π°Π½Π΅Π΅. Π£ нас установлСна Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° 7 сСк. Π₯отя, Π΄ΡƒΠΌΠ°ΡŽ, ΠΈ ΠΎΠ΄Π½ΠΎΠΉ сСкунды Π²ΠΏΠΎΠ»Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚.

Β«res_sql="SELECT disposition FROM cdr WHERE uniqueid = '$1'"Β»:

Запрос Π² mysql ΠΌΡ‹ вынСсли Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для удобства.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ запрос Π² mysql ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄. УдаляСм всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ Β«ANSWEREDΒ», Ссли Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ. Если ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Β«ANSWEREDΒ» нСсколько, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«answerΒ» ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π»ΠΈΠ±ΠΎ Β«ANSWEREDΒ» Π»ΠΈΠ±ΠΎ «».
Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«answerΒ» Π½Π΅ Ρ€Π°Π²Π½ΠΎ Β«ANSWEREDΒ», Ρ‚ΠΎ это ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ². Π’ зависимости ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° case ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ адрСс, ΠΊΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ e-mail ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΈ Ρ‡Ρ‚ΠΎ Π² этом сообщСнии Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ (измСняСмая Ρ‡Π°ΡΡ‚ΡŒ сообщСния).

Π”Π°Π»Π΅Π΅ рассмотрСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°Π΄Π°Π½Π° Π² Asterisk, Π½ΠΎ Π½Π΅ описана Π² скриптС. Π’ этом случаС [email protected] ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ письмо, ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ извСстна скрипту.

Если ΠΆΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ описана, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ письмо ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ письмо Π½Π° [email protected] с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Β«uniqueidΒ», для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ события ΠΏΠΎ этому Π·Π²ΠΎΠ½ΠΊΡƒ, Π² случаС нСобходимости.

На этом скрипт заканчиваСтся.

ΠžΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ mysql ΠΌΡ‹ использовали Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΡƒΠ·Π½Π°Π»ΠΈ. Π’ΠΎ FreePBX для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Asterisk Π² mysql Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

cat /etc/amportal.conf | grep AMPDBUSER

А для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Asterisk Π² mysql Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

cat /etc/amportal.conf | grep AMPDBPASS

Настройка Asterisk

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ FreePBX. Π’ΠΎ FreePBX Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (см. https://asterisk-pbx.ru/wiki/freepbx/files), Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… FreePBX пСрСзаписываСт ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ пСрСзаписываСт (ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ custom), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Β«extensions_override_freepbx.confΒ», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ относится ΠΊ Ρ‚ΠΈΠΏΡƒ custom.

Для Π½Π°Ρ‡Π°Π»Π° убСдимся, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ Β«/etc/asterisk/extensions.confΒ» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» Β«extensions_override_freepbx.confΒ». Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

cat /etc/asterisk/extensions.conf | grep extensions_override_freepbx.conf
#####################
#include extensions_override_freepbx.conf
#####################

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» Β«/etc/asterisk/extensions_override_freepbx.confΒ» ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ:

nano /etc/asterisk/extensions_override_freepbx.conf
#####################
[ext-queues]

exten => h,1,System(/home/asterisk/scripts/noanswer.sh ${CDR(uniqueid)} ${CALLERID(num)} ${NODEST} &)
exten => h,2,Macro(hangupcall,)
#####################

Как я ΠΈ писал Ρ€Π°Π½Π΅Π΅ символ Β«&Β» Π² ΠΊΠΎΠ½Ρ†Π΅ обязатСлСн. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² bash-скриптС с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ CDR нСпосрСдствСнно ΠΈΠ· Π±Π°Π·Ρ‹ mysql, Π° эти Π΄Π°Π½Π½Ρ‹Π΅ заносятся Π² mysql Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС выполнСния Β«exten => h,2,Macro(hangupcall,)Β», Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ окончания ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ bash-скрипта, Π° ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ шага Π² Asterisk. А сам bash-скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ основной своСй части.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Β«/etc/asterisk/extensions_override_freepbx.confΒ» вступили Π² силу Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ядро Asterisk ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

/usr/sbin/asterisk -rx "core restart now"

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ bash-скрипт Π±ΡƒΠ΄Π΅Ρ‚ создан.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

НавСрноС, это 1001-ΠΉ способ Β«ΠΎΡ‚Π»ΠΎΠ²Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²Β» Π² Asterisk. ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях ΠΊΠ°ΠΊ эту Π·Π°Π΄Π°Ρ‡Ρƒ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ Π²Ρ‹. И Ρ‡Ρ‚ΠΎ, ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ мнСнию, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ/ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ/ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ Π·Π° конструктивныС ΠΈΠ΄Π΅ΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com