IP ATC Asterisk β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ Π² ΠΎΠ±Π»Π°ΡΡΠΈ IP-ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΠΈ. Π web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ FreePBX, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π»Ρ Asterisk, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΠΎΡΠΎΠ³ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°ΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ IP-ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΠ΅ΠΉ, ΡΠΎ ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² Asterisk. ΠΠΎ Π±ΡΠ΄ΡΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΎΡ Π²Π°Ρ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΡΡΠ²ΠΎ ΠΈ Π²ΡΠ΄Π΅ΡΠΆΠΊΠ°.
ΠΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ Π²ΡΡΠ°Π»Π° Π·Π°Π΄Π°ΡΠ° Π½Π°ΡΡΡΠΎΠΈΡΡ e-mail ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ Π²ΡΠ·ΠΎΠ²Π°Ρ . Π’ΠΎΡΠ½Π΅Π΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΎΠΏΠΎΠ²Π΅ΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π· e-mail ΠΎ ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΡΠ» Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π½ΠΎ Π½ΠΈΠΊΡΠΎ (ΠΈΠ· Π°Π³Π΅Π½ΡΠΎΠ²) ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΎΡΠ²Π΅ΡΠΈΠ» Π½Π° ΡΡΠΎΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ².
ΠΠ° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΡΡΠ°ΡΠ½ΡΡ
ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π²ΠΎ FreePBX. Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡ Π·Π°Π΄Π°ΡΡ, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ.
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ Β«Π² Π»ΠΎΠ±Β» ΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΊΠ»ΡΡ Π½Π΅ Π½Π°ΡΠ»ΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΠΈΡΠΊΠ°Π»ΠΈ, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Π΅Π»Π°Π΅ΡΡβ¦ ).
ΠΠ°Π²ΡΠΊΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Asterisk Π½Π΅ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅
ΠΡΠΎΡΠΈΡΠ°Π² ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π§ΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ:
ΠΡΡΡ FreePBX 13.0.197, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Asterisk 13.12.1. ΠΠ΅ΡΡΠΈΡ ΠΠ‘ SHMZ release 6.6 (Final). ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° CentOS.
Π Asterisk Π½Π°ΡΡΡΠΎΠ΅Π½ IVR (Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ΅ ΠΌΠ΅Π½Ρ) ΡΠ°ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡΠΈΠΉ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π½Π° ΡΠ°Π·Π½ΡΠ΅ Queues (ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ). ΠΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Agents (Π°Π³Π΅Π½ΡΡ), Ρ. Π΅. ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
Π’Π΅ΠΎΡΠΈΡ
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Asterisk
ΠΠΎΠ³Π΄Π° Π½Π° Asterisk ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ², ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° IVR. ΠΠ²ΠΎΠ½ΡΡΠΈΠΉ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ±ΠΎΡ, Π½Π°ΠΆΠ°Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΡ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅, ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ Π°Π³Π΅Π½ΡΠ°ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π·Π²ΠΎΠ½ΠΎΠΊ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π°Π»ΡΡΠ΅, ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ Report CDR (Π ΠΈΡ.1).
Π ΠΈΡ.1
ΠΠΎΠ³Π΄Π° Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠΏΠ°Π» Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Ρ Π²ΡΠ΅Ρ
Π°Π³Π΅Π½ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«DispositionΒ» ΡΡΠ°Π»ΠΎ ΡΠ°Π²Π½ΡΠΌ Β«NO ANSWERΒ», Π΅ΡΠ»ΠΈ Π°Π³Π΅Π½ΡΡ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ Π½Π΅ Π·Π°Π½ΡΡΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«DispositionΒ» ΠΌΠΎΠ³Π»Π° ΠΏΡΠΈΠ½ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠΌ.
ΠΠ· Report CDR ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ (Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ App Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°Π²Π½ΡΠΌ Β«QueueΒ»), ΡΠΎ Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΡΠΈΠ³ΡΡΠΈΡΡΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Β«uniqueidΒ» (ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° System).
ΠΠΎΡΠΎΡΠΊΠΎ ΠΎ CDR
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ CDR, ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π² CDR Π·Π°Π½ΠΎΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ Π² Report CDR. CDR, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ β ΡΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
, Π² ΠΊΠΎΡΠΎΡΡΡ Asterisk Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (ΡΠΌ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² 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].
ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ Π²Π·ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΄Π°:
Π‘Π½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ/ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ/ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²:
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 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ ΠΈ Π² ΡΠ΅Π»Π΅ ΠΏΠΈΡΡΠΌΠ°, ΠΈ Π² ΡΠ΅ΠΌΠ΅ ΠΏΠΈΡΡΠΌΠ° Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ (Π‘ΠΌ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ:
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Β». Π Π½Π΅ΠΌ ΠΌΡ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΠΈΡΡ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π°Π΄ΡΠ΅ΡΠ° (ΡΠΌ.
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 Π΅ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² (ΡΠΌ.
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Β«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