Asterisk™: будущее телефонии Второе издание - Страница 151

Изменить размер шрифта:

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 => _11XX,n,Verbose(1|Hot Desk Extension $ is changing status)
exten => _11XX,n,Verbose(1|Checking current status of extension $)
exten => _11XX,n,Set($_STATUS=${HOTDESK_INFO(status,$)})
exten => _11XX,n,Set($_PIN=${HOTDESK_INFO(pin,$)})
exten => _11XX,n,GotoIf($[${ISNULL(${$_STATUS})}]?invalid_user)
exten => _11XX,n,GotoIf($[${$_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=$[$ + 1])
exten => login,n,Read(PIN_ENTERED|enter-password|${LEN(${$_PIN})})

exten => login,n,GotoIf($[$ = ${$_PIN}]?valid_login,1)

exten => login,n,Playback(invalid-pin,1)

exten => login,n,GotoIf($[$ <= $]?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

($)})

exten => valid_login,n,GotoIf($[$ > 0]?logout_login,1)

exten => valid_login,n(set_login_status),NoOp()

exten => valid_login,n,Set(HOTDESK_STATUS($)=1,$)

exten => valid_login,n,GotoIf($[$ < 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($[$ < $])

exten => logout_login,n,Set(WHO=${HOTDESK_LOGGED_IN_USER($, $)})

exten => logout_login,n,Set(HOTDESK_STATUS($)=0)

exten => logout_login,n,Set(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($)=0)

exten => logout,n,GotoIf($[$ < 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 $ 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($)})

exten => _X.,n,GotoIf($[${ISNULL($)}]?no_outgoing,1)

exten => _X.,n,Set($_CID_NAME=${HOTDESK_INFO(cid_name,$)})

exten => _X.,n,Set($_CID_NUMBER=${HOTDESK_INFO(cid_number,$)})

exten => _X.,n,Set($_CONTEXT=${HOTDESK_INFO(context,$)})

exten => _X.,n,Goto(${$_CONTEXT},$,1)

[international]

exten => _011.,1,NoOp()

exten => _011.,n,Set(E=$)

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 => _1NXXNXXXXXX,n,Goto(outgoing,call,1)

exten => _NXXNXXXXXX,1,Goto(1$,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 => _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)=${$_CID_NAME})

exten => call,n,Set(CALLERID(number)=${$_CID_NUMBER})

exten => call,n,Dial(SIP/service_provider/$)

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 => _11XX,n,Set(LOCATION=${HOTDESK_LOCATION($)}) exten => _11XX,n,GotoIf($[${ISNULL($)}]?voicemail,1) exten => _11XX,n,Dial(SIP/$,30) exten => _11XX,n,Goto(voicemail,1)

exten => voicemail,1,NoOp()

exten => voicemail,n,Voicemail($@hotdesk,u)

Оригинальный текст книги читать онлайн бесплатно в онлайн-библиотеке Knigger.com