Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅
ΠΠ΄Π΅Ρ Β«ΠΏΠΎΠ΄ΡΡΠΆΠΈΡΡΒ» ΡΡΠΈ Π΄Π²Π΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ΄ΠΈΠ»Π°ΡΡ Π΄Π°Π²Π½ΠΎ, ΠΏΡΠΈΡΠ΅ΠΌ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ². ΠΡΡΡΡΠΎΠ΅ Π³ΡΠ³Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΄Π°Π²Π°Π»ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅ ΡΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π·Π°ΠΊΠΈΠ½ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ (Π½Π° ΠΏΡΡ Π΅, Π±Π°ΡΠ΅, ΠΏΠΈΡΠΎΠ½Π΅ ΠΈ Ρ.Β ΠΏ.) Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ Π±ΡΠ΄Π΅Ρ Π²Π°ΠΌ ΡΡΠ°ΡΡΡΠ΅. ΠΠ½Π΅ ΠΆΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ» β Π±Π΅Π· Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ ΠΈ ΠΠ’Π‘.
ΠΡΠΎΠ²ΠΎΠ·ΠΈΠ»ΡΡ Ρ Ρ ΡΡΠΈΠΌ Π² ΡΡΠΌΠΌΠ΅ 4 ΡΠ°Π±ΠΎΡΠΈΡ Π΄Π½Ρ, Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠΈΠ» ΡΠΎΠ³ΠΎ. Π Π°Π±ΠΎΡΠ° ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AMI, Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΈΠ³Π³Π΅ΡΡ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΠ’Π‘ ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡ ΠΎΠ΄ΠΈΡ ΠΌΠΈΠ½ΡΡ 15.
Π Π½Π°Π»ΠΈΡΠΈΠΈ Π·Π°Π±Π±ΠΈΠΊΡ 4.4, ΠΎΠΊΠΎΠ»ΠΎ 100 ΡΡΡΠΊ ΠΡΡΠ΅ΡΠΈΡΠΊΠΎΠ² 13 Π²Π΅ΡΡΠΈΠΈ. ΠΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΠ’Π‘ ΠΈΠ΄ΡΡ Ρ Π²Π΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ FreePBX, ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Ρ Π³ΠΎΠ»ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ, ΠΊΡΡΠ΅ΠΉ Ρ
ΠΈΡΡΠΎΡΡΠ΅ΠΉ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΠ’Π‘
ΠΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ β ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΈΡΠ°Ρ ΠΈ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΠ’Π‘ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ AGI, AMI, ARI ΠΈ SSH ΠΊΠΎΠ½ΡΠΎΠ»Ρ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π».
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°Π΄ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΡΠΎ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΡΠΈ Π°Π³ΠΈ, Π°ΠΌΠΈ, Π°ΡΠΈβ¦.
- AGI β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π΅. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ.
- AMI β ΡΠΌΠ΅Π΅Ρ ΠΎΡΠ΄Π°Π²Π°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ 5038 ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Telnet. ΠΠ°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ!
- ARI β ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΌΠΎΠ΄Π½ΠΎ, JSONΠ½ΠΎ. ΠΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π»Ρ Zabbix, Π½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ: Π½Π΅Π»ΡΠ·Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠ½ΡΡ, Π΄Π»Ρ ΠΏΠΈΡΠΎΠ² Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ online/offline, Ρ ΠΎΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ ΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ΅.
- SSH β ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π½Π΅ Π΄Π°ΡΡ ΠΈΠ·-Π·Π° Β«ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈΒ». Π‘ΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΠΈΡ Π½Π΅ Π±ΡΠ΄Ρ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΈ Π²ΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ ARI Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ 90% Π²ΡΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Ρ.
Zabbix ΠΈ Telnet β ΠΌΠΎΠ΅ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅
AMI Π·Π½Π°Ρ Ρ ΠΎΡΠΎΡΠΎ, Π² ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π» ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ΅ΡΡ Π² ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°Ρ Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΠΎΡΠΈΡΠ°ΠΌ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π²ΠΎΠ½ΠΊΠ°ΠΌΠΈ ΠΈ Ρ.ΠΏ. Π‘ Telnet ΡΠΎΠΆΠ΅ Π²ΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΡΡΠ½ΠΎ: ΠΎΡΠΊΡΡΠ²Π°ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠΈΡΠ°ΠΉ ΠΎΡΠ²Π΅Ρ. Π§ΡΠΎ Ρ ΠΈ ΡΠ΄Π΅Π»Π°Π», Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠ΅Π½Ρ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π».
Telnet Ρ Π·Π°Π±Π±ΠΈΠΊΡΠ° Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ½ΡΠΎΠ»Π΅ Linux, ΠΎΠ½ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π·Π°ΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠ° Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Ρ. ΠΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π΄ΡΡΠ³Π°Ρ, ΠΈ Π½Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ°ΡΡ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Ρ, Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠΎΡΠ»Π΅ ΡΡΠ΅ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅Π· ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Telnet.
Π― ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π»ΠΎΠ³ΠΈΠ½Π° Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ, Π΄Π°Π»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡ. Π Π°Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°, Π²ΡΠΊΠΈΠ½ΡΠ» ΠΈΠ· ΠΊΠΎΠ΄Π° Π²ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°Π» Π²ΡΠ΅. Π Π°Π±ΠΎΡΠ°Π΅Ρ! ΠΠΎ ΠΏΠΎΠ΄ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ. ΠΠ΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅β¦
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ
ΠΠ΅ΡΠ΅ΡΠΈΡΠ°Π» Π΅ΡΠ΅ ΡΠ°Π· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ARI, ΠΏΡΠΎΠ²Π΅Π» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ β Π½Π΅Ρ ΡΡΡ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ. ΠΠΈΡΡ Π΅ΡΡΡ, ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΡ Π΅ΡΡΡ, Π±ΡΠΈΠ΄ΠΆΠΈ Π΅ΡΡΡ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ Π½Π΅Ρ. Π ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π°ΠΆΠ΅ Π·Π°Π΄ΡΠΌΠ°Π»ΡΡ, ΡΠ°ΠΊ Π»ΠΈ Π½ΡΠΆΠ½Ρ Π½Π°ΠΌ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ?
ΠΠΎ Π·Π°Π±Π°Π²Π½ΠΎΠΌΡ ΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ², Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ»Π΅ΡΠ°Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π·Π²ΠΎΠ½ΠΊΠΎΠ². ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π² ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π½ΠΈΠΈ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΠ°Π»Π°ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.
asterisk -rx "sip reload"
ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΠΏΠΎ Π²Π΅Π±Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ AMI: ΡΡΠΎ Π±Ρ ΡΠ΅ΡΠΈΠ»ΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΠ΄ΡΠΌΠ°Π» Ρ. ΠΠ°ΡΠΈΠ½Π°Ρ ΠΊΠΎΠΏΠ°ΡΡ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΈ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠΈΡΠΊΠ° Π²Π΅Π΄Π΅Ρ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Asterisk, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΌΠΎΠΈΡ Π·Π°Π΄Π°Ρ Π΅ΡΡΡ ΠΎΠΏΡΠΈΡ webenabled Π² ΡΠ°ΠΉΠ»Π΅ /etc/asterisk/manager.conf, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES, Π² ΡΠ΅ΠΊΡΠΈΠΈ [general]
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠΉ Π²Π΅Π± Π·Π°ΠΏΡΠΎΡ Π²ΠΈΠ΄Π°
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° FreePBX, ΡΠ΅ΡΠ΅Π· Π²Π΅Π± Π½Π΅Π»ΡΠ·Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ, Π²Π½ΠΎΡΡ ΠΏΡΠ°Π²ΠΊΠΈ Π² ΡΠ°ΠΉΠ» manager.conf. FreePBX Π½Π΅ ΡΡΠΈΡΠ°Π΅Ρ Π΅Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±.
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠΌΠΈ Asterisk, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Π», ΡΡΠΎΠ±Ρ Π³Π΄Π΅-ΡΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»Π°ΡΡ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ΅Π½Ρ ΡΠ΄ΠΈΠ²ΠΈΠ»ΠΎ, ΡΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ’Π‘. ΠΠ°ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π· ΠΈΡΠΊΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅: ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ.
WEB AMI β ΡΡΠΎ Π·Π° Π·Π²Π΅ΡΡ?
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ webenabled Π² ΡΠ°ΠΉΠ» manager.conf ΠΎΡΠΊΡΡΠ²Π°Π»ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ’Π‘ΠΊΠΎΠΉ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±. ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠΉ AMI, ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ Π² Π²Π΅Π±Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΠ’Π‘ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ. ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ AMI. ΠΠΎΡΠ»Π΅ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ, ΠΊ ΠΠ’Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ:
Π’ΡΡ Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°Π»: Β«ΠΠΎΡ ΠΎΠ½ΠΎ β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅! Π‘Π΅ΠΉΡΠ°Ρ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ²ΠΎ! ΠΠ·ΠΈ-ΠΏΠΈΠ·ΠΈ Π»Π΅ΠΌΠΎΠ½ ΡΠΊΠ²ΠΈΠ·ΠΈΒ», Π½ΠΎ ΡΠ°Π΄ΠΎΠ²Π°ΡΡΡΡ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ° ΡΠ°Π½ΠΎ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GET Π·Π°ΠΏΡΠΎΡ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ action, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ²Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ xml ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π²ΡΠ΅Ρ
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ ΠΈ ΠΈΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ. ΠΡΠΎ Π²ΡΠ΅ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π½ΠΎ Π½ΡΠΆΠ½Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΠΈΠΈ ΠΈΠ· cookie. ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°Π΅ΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
ΠΡΠΎΡΠ΅ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
Π Π½Π°ΡΠ°Π»Π΅ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π½Π° Π°Π΄ΡΠ΅Ρ
https://ats:8089/mxml?action=login&username=zabbix&secret=zabbix
Host: ats:8089
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
ΠΡΠ²Π΅Ρ:
GET: HTTP/1.1 200 OK
Server: Asterisk/13.29.2
Date: Thu, 18 Jun 2020 17:41:19 GMT
Cache-Control: no-cache, no-store
Content-type: text/xml
Set-Cookie: mansession_id="6f5de42c"; Version=1; Max-Age=600
Pragma: SuppressEvents
Content-Length: 146
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" message="Authentication accepted"/>
</response>
</ajax-response>
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ mansession_id="6f5de42c", Ρ.Π΅. ΡΠ°ΠΌΠ° ΠΊΡΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ½ΡΠ΅Π½Ρ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ° Β«Authentication acceptedΒ». ΠΠ°Π»ΡΡΠ΅, ΠΏΡΠΈ Π²ΡΠ΅Ρ
ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ
ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΠ’Π‘ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π·Π°ΠΏΡΠΎΡ ΠΊΡΠΊΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΡΠΊΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π΄ΡΡΠ³ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠ°Ρ
ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΡ: Β«
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π² Π·Π°Π±Π±ΠΈΠΊΡΠ΅ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ²ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅
ΠΠ»Ρ Π°Π²ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΏΠΈΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π°Π΄ΡΠ΅ΡΡ:
Π ΠΎΡΠ²Π΅Ρ ΠΠ’Π‘ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΌ XML ΠΎΡΠ²Π΅Ρ:
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" eventlist="start" message="Registrations will follow"/>
</response>
...
<response type="object" id="unknown">
<generic event="RegistryEntry" host="login.mtt.ru" port="5060" username="111111" domain="login.mtt.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="222222" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="333333" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
...
</ajax-response>
Π ΠΎΡΠ²Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ°, ΠΏΠΎ ΡΡΠΎΠΌΡ Π² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π΅ ΠΌΡ Π΅Π³ΠΎ ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ XPath: //response/generic[@host]
ΠΠ°Π»ΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. Π§ΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ ΠΎΡΠ²Π΅Ρ Π±ΡΠ» Π² JSON ΡΠΎΡΠΌΠ°ΡΠ΅. XML ΠΏΡΠΈ Π°Π²ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡΡ
Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ XML Π² JSON ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ Π°Π²ΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» ΡΠΊΡΠΈΠΏΡ Π½Π° JS
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π² ΠΎΡΠ²Π΅ΡΠ΅ ΠΠ’Π‘ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ, Π° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° //response/generic[@host] ΠΎΠ½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° Π΄Π²ΠΎΠΉΠ½ΡΠ΅.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· XML ΠΎΡΠ²Π΅ΡΠ° ( ΡΠ΅ΠΏΠ΅ΡΡ JSON )β.
SIP Registry
ΠΠ»Ρ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: username, host, port. ΠΠ΅Π½Ρ ΡΡΡΡΠ°ΠΈΠ²Π°Π»ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° [email protected]:5060, ΡΠΈΡΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ Π½Π΅ Π½Π°ΡΠ΅Π».
ΠΠ»Π°Π²Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅Ρ
ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡ
, Asterisk β AMI SIPshowregistry. Π Π°Π· Π² ΠΌΠΈΠ½ΡΡΡ ΠΎΠ½ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ GET Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΊ
ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎ 100 Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ», Π½ΠΎ ΠΏΡΠΈ 1700 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ Π΄Π°Π²Π°Π»ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ 15 ΡΠ΅ΠΊΡΠ½Π΄Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ. ΠΠΌΠ΅ΠΉΡΠ΅ ΡΡΠΎ Π²Π²ΠΈΠ΄Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ Β«ΡΠ°Π·ΠΌΠ°Π·ΡΠ²Π°Π½ΠΈΡΒ» Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°Π·Π½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ ΠΎΠΏΡΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π½Π΅ Ρ ΡΠ°Π½Ρ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π΅ Π²ΠΈΠΆΡ Π² ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , Π΅ΡΠ»ΠΈ ΠΎΡΠ²Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 64Π, ΡΠΎ Π·Π°Π±Π±ΠΈΠΊΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π·Π°Π΅Ρ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ XML ΠΎΡΠ²Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π² ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π§Π΅ΡΠ΅Π· XPath ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ°ΠΊ:
string(//response/generic[@event=Β«RegistryEntryΒ»][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@state)
ΠΠ»Ρ ΡΡΠ°ΡΡΡΠΎΠ² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΡΠ°ΡΡΡΡ, Π° ΠΏΠ΅ΡΠ΅Π²Π΅Π» ΠΈΡ
Π² ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Π²ΠΈΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
SIP Peers
ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΡΠΈΠΏ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠΌΠΈ, Π΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Asterisk β AMI SIPshowregistry, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅.
ΠΠ΄Π΅ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄Π²Π° Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
- Π‘ΡΠ°ΡΡΡ ΠΏΠΈΡΠ° Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅
- ΠΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° β Π΅ΡΠ»ΠΈ ΡΡΠ°ΡΡΡ ΠΠ, ΡΠΎ ΠΏΠΈΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΈΠ½Π°ΡΠ΅ Β«-1Β»
Π‘Π°ΠΌ ΠΏΡΡΡ Π΄ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΆΠ΅ ΡΡΡΡ ΠΏΡΠΎΡΠ΅ XPath:
string(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
ΠΠ»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» JavaScript, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΠΎΡ ΡΡΠ°ΡΡΡΠ° ΠΏΠΈΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΡΠ°Π½ΡΡΡΡ ΠΎΠ½ΠΈ Π²ΠΌΠ΅ΡΡΠ΅:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈ Π½Π΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ. ΠΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
ΠΡΠ΅ΠΌ ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ! Π¨Π°Π±Π»ΠΎΠ½ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π½Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com