ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅
ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Asterisk Manager.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
UserEvent
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
Header
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠΌΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. Π ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² (ΠΈ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ).
ActionID
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
ΠΡΠΈΠΌΠ΅Ρ
Action: UserEvent Blah: one
SomethingElse: two ActionID: 63346
Event: UserEvent Privilege: user,all UserEvent: Action: UserEvent Blah: one
SomethingElse: two ActionID: 63346
WaitEvent
ΠΠΆΠΈΠ΄Π°Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ
ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Asterisk ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Success, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Asterisk Manager ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠ±ΡΡΠΈΠ΅. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° WaitEvent Π²ΡΠ·Π²Π°Π½Π° Π΄Π»Ρ HTTP-ΡΠ΅Π°Π½ΡΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Manager, ΡΠΎΠ±ΡΡΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ ΡΡΠ°Π²ΠΈΡΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
Timeout
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ActionID
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: WaitEvent Timeout: 30
Action: Ping
Response: Success
Message: Waiting for Event...
Event: WaitEventComplete
Response: Pong
ZapDNDoff
ΠΡΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π»Ρ Zap-ΠΊΠ°Π½Π°Π»Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ» ΠΡΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π»Ρ Zap-ΠΊΠ°Π½Π°Π»Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ».
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ZapChannel
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠΎΠΌΠ΅Ρ Zap-ΠΊΠ°Π½Π°Π»Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ».
ActionID
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapDNDoff ZapChannel: 1
ActionID: 01234567899876543210
Response: Success
ActionID: 01234567899876543210
Message: DND Disabled
ZapDNDon
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ Zap-ΠΊΠ°Π½Π°Π»Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ»
ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Zap-ΠΊΠ°Π½Π°Π»Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ».
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ZapChannel
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠΎΠΌΠ΅Ρ Zap-ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΒ».
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapDNDon ZapChannel: 1
ActionID: 98765432100123456789
Response: Success
ActionID: 98765432100123456789
Message: DND Enabled
ZapDialOffhook
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎ Zap-ΠΊΠ°Π½Π°Π»Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ Π»ΠΈΠ½ΠΈΠΈ
ΠΠ°Π±ΠΈΡΠ°Π΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎ Zap-ΠΊΠ°Π½Π°Π»Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ Π»ΠΈΠ½ΠΈΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ZapChannel
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] Zap-ΠΊΠ°Π½Π°Π», ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ Π½ΠΎΠΌΠ΅ΡΠ°.
Number
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] ΠΠ°Π±ΠΈΡΠ°Π΅ΠΌΡΠΉ Π½ΠΎΠΌΠ΅Ρ.
ActionID
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapDialOffhook ZapChannel: 1 Number: 543215432154321 ActionID: 5676
Response: Success ActionID: 5676 Message: ZapDialOffhook
ZapHangup
Π Π°Π·ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Zap-ΠΊΠ°Π½Π°Π»
ZapChannel
[ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] Zap-ΠΊΠ°Π½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅Π΄ΠΈΠ½Π΅Π½.
ActionID
[Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ] Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapHangup ZapChannel: 1-1 ActionID: 98237892
Response: Success ActionID: 98237892 Message: ZapHangup
ZapRestart
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ Zaptel-ΠΊΠ°Π½Π°Π»ΠΎΠ²
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Zaptel-ΠΊΠ°Π½Π°Π»Ρ, Π·Π°Π²Π΅ΡΡΠ°Ρ Π²ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²Ρ.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapRestart
Response: Success Message: ZapRestart: Success
ZapShowChannels
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡ Zapata-ΠΊΠ°Π½Π°Π»ΠΎΠ²
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΡ Π²ΡΠ΅Ρ Zap-ΠΊΠ°Π½Π°Π»ΠΎΠ².
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
ActionID
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapShowChannels ActionID: 9999999999
Response: Success ActionID: 9999999999
Message: Zapata channel status will follow
Event: ZapShowChannels Channel: 1
Signalling: FXO Kewlstart Context: incoming DND: Disabled Alarm: No Alarm ActionID: 9999999999
Event: ZapShowChannels Channel: 4
Signalling: FXS Kewlstart Context: incoming DND: Disabled Alarm: No Alarm ActionID: 9999999999
Event: ZapShowChannelsComplete ActionID: 9999999999
ZapTransfer
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Zap-ΠΊΠ°Π½Π°Π»Π°
ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Zap-ΠΊΠ°Π½Π°Π»Π°.
ΠΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ
none
ΠΡΠΈΠΌΠ΅Ρ
Action: ZapTransfer ZapChannel: 1 ActionID: 4242
Response: Success Message: ZapTransfer ActionID: 4242
G
ΠΡΠΈΠΌΠ΅Ρ func_odbc
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Β«Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²Β», ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π° ΡΠ΅ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΡΡΡΠΈΠΌ ΠΌΠΎΠ³ΡΡΠ΅ΡΡΠ²ΠΎ func_odbc: ΡΠΈΡΡΠ΅ΠΌΠ° "Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²"Β» Π³Π»Π°Π²Ρ 12. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΡΡ ΡΠΌΡΡΠ» Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π³Π»Π°Π²Π΅ 12 ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ.
Π‘ΠΈΡΡΠ΅ΠΌΠ° Β«Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²Β» (extensions.conf)
ΠΠΎΠ΄Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°
; Π€ΡΠ½ΠΊΡΠΈΡ "Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²"
[hotdesk][hotdesk] ; Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ "Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°" exten => _11XX,1,NoOp() exten => _11XX,n,Set(E=${EXTEN}) exten => _11XX,n,Verbose(1|Hot Desk Extension ${E} is changing status) exten => _11XX,n,Verbose(1|Checking current status of extension ${E}) exten => _11XX,n,Set(${E}_STATUS=${HOTDESK_INFO(status,${E})}) exten => _11XX,n,Set(${E}_PIN=${HOTDESK_INFO(pin,${E})}) exten => _11XX,n,GotoIf($[${ISNULL(${${E}_STATUS})}]?invalid_user) exten => _11XX,n,GotoIf($[${${E}_STATUS} = 1]?logout,1:login,1) exten => login,1,NoOp() exten => login,n,Set(PIN_TRIES=0) exten => login,n,Set(MAX_PIN_TRIES=3) exten => login,n(get_pin),NoOp() exten => login,n,Set(PIN_TRIES=$[${PIN_TRIES} + 1]) exten => login,n,Read(PIN_ENTERED|enter-password|${LEN(${${E}_PIN})})exten => login,n,GotoIf($[${PIN_ENTERED} = ${${E}_PIN}]?valid_login,1)
exten => login,n,Playback(invalid-pin,1)
exten => login,n,GotoIf($[${PIN_TRIES} <= ${MAX_PIN_TRIES}]?get_pin:login_fail,1)
exten => valid_login,1,NoOp()
exten => valid_login,n,Set(LOCATION=${CUT(CHANNEL,/,2)})
exten => valid_login,n,Set(LOCATION=${CUT(LOCATION,-,1)})
exten => valid_login,n,Set(ARRAY(USERS_LOGGED_IN)=${HOTDESK_CHECK_PHONE_LOGINS
(${LOCATION})})
exten => valid_login,n,GotoIf($[${USERS_LOGGED_IN} > 0]?logout_login,1)
exten => valid_login,n(set_login_status),NoOp()
exten => valid_login,n,Set(HOTDESK_STATUS(${E})=1\,${LOCATION})
exten => valid_login,n,GotoIf($[${ODBCROWS} < 1]?error,1)
exten => valid_login,n,Playback(agent-loginok)
exten => valid_login,n,Hangup()
exten => logout_login,1,NoOp()
exten => logout_login,n,Set(ROW_COUNTER=0)
exten => logout_login,n,While($[${ROW_COUNTER} < ${USERS_LOGGED_IN}])
exten => logout_login,n,Set(WHO=${HOTDESK_LOGGED_IN_USER(${LOCATION}, ${ROW_COUNTER})})
exten => logout_login,n,Set(HOTDESK_STATUS(${WHO})=0)
exten => logout_login,n,Set(ROW_COUNTER=$[${ROW_COUNTER} + 1])
exten => logout_login,n,EndWhile()
exten => logout_login,n,Goto(valid_login,set_login_status)
exten => logout,1,NoOp()
exten => logout,n,Set(HOTDESK_STATUS(${E})=0)
exten => logout,n,GotoIf($[${ODBCROWS} < 1]?error,1)
exten => logout,n,Playback(silence/1&agent-loggedoff)
exten => logout,n,Hangup()
exten => login_fail,1,NoOp()
exten => login_fail,n,Playback(silence/1&login-fail)
exten => login_fail,n,Hangup()
exten => error,1,NoOp()
exten => error,n,Playback(silence/1&connection-failed)
exten => error,n,Hangup()
exten => invalid_user,1,NoOp()
exten => invalid_user,n,Verbose(1|Hot Desk extension ${E} does not exist)
exten => invalid_user,n,Playback(silence/2&invalid)
exten => invalid_user,n,Hangup()
include => hotdesk_outbound
[hotdesk_outbound]
exten => _X.,1,NoOp()
exten => _X.,n,Set(LOCATION=${CUT(CHANNEL,/,2)}) exten => _X.,n,Set(LOCATION=${CUT(LOCATION,-,1)})
exten => _X.,n,Set(WHO=${HOTDESK_PHONE_STATUS(${LOCATION})})
exten => _X.,n,GotoIf($[${ISNULL(${WHO})}]?no_outgoing,1)
exten => _X.,n,Set(${WHO}_CID_NAME=${HOTDESK_INFO(cid_name,${WHO})})
exten => _X.,n,Set(${WHO}_CID_NUMBER=${HOTDESK_INFO(cid_number,${WHO})})
exten => _X.,n,Set(${WHO}_CONTEXT=${HOTDESK_INFO(context,${WHO})})
exten => _X.,n,Goto(${${WHO}_CONTEXT},${EXTEN},1)
[international]
exten => _011.,1,NoOp()
exten => _011.,n,Set(E=${EXTEN})
exten => _011.,n,Goto(outgoing,call,1)
exten => i,1,NoOp()
exten => i,n,Playback(silence/2&sorry-cant-let-you-do-that2)
exten => i,n,Hangup()
include => longdistance
[longdistance]
exten => _1NXXNXXXXXX,1,NoOp()
exten => _1NXXNXXXXXX,n,Set(E=${EXTEN})
exten => _1NXXNXXXXXX,n,Goto(outgoing,call,1)
exten => _NXXNXXXXXX,1,Goto(1${EXTEN},1)
exten => i,1,NoOp()
exten => i,n,Playback(silence/2&sorry-cant-let-you-do-that2) exten => i,n,Hangup()
include => local
[local]
exten => _416NXXXXXX,1,NoOp()
exten => _416NXXXXXX,n,Set(E=${EXTEN})
exten => _416NXXXXXX,n,Goto(outgoing,call,1)
exten => i,1,NoOp()
exten => i,n,Playback(silence/2&sorry-cant-let-you-do-that2) exten => i,n,Hangup()
[outgoing]
exten => call,1,NoOp()
exten => call,n,Set(CALLERID(name)=${${WHO}_CID_NAME})
exten => call,n,Set(CALLERID(number)=${${WHO}_CID_NUMBER})
exten => call,n,Dial(SIP/service_provider/${E})
exten => call,n,Playback(silence/2&pls-try-call-later)
exten => call,n,Hangup()
[hotdesk_phones]
exten => _11XX,1,NoOp()
exten => _11XX,n,Set(E=${EXTEN})
exten => _11XX,n,Set(LOCATION=${HOTDESK_LOCATION(${E})}) exten => _11XX,n,GotoIf($[${ISNULL(${LOCATION})}]?voicemail,1) exten => _11XX,n,Dial(SIP/${LOCATION},30) exten => _11XX,n,Goto(voicemail,1)
exten => voicemail,1,NoOp()
exten => voicemail,n,Voicemail(${E}@hotdesk,u)
exten => voicemail,n,Hangup()
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ Β«Π‘ΠΈΡΡΠ΅ΠΌΠ° "Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²" (sip.conf)Β», Β«Π‘ΠΈΡΡΠ΅ΠΌΠ° "Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²" (func_odbc.conf)Β», Π³Π»Π°Π²Ρ 5, Π³Π»Π°Π²Ρ 6, Read(), CUT, While(), ISNULL, VoiceMail(), CALLERID, Dial(),GotoIf()
Π‘ΠΈΡΡΠ΅ΠΌΠ° Β«Π³ΠΎΡΡΡΠΈΡ ΡΡΠΎΠ»ΠΎΠ²Β» (func_odbc.conf)
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΈΠ°Π»ΠΏΠ»Π°Π½Π°
[INFO]
prefix=HOTDESK dsn=asterisk