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

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

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

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ событиС

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ событиС Π² интСрфСйс 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