Страница 1 из 2

Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 16:19
AndyBack
Как сказать клиенту средствами ARI/AGI/AMI/DialPlan чтобы он сделал новый звонок через другой сервер? И возможно ли такое?

Допустим, есть 2 астериска: аст1, аст2. Клиент звонит на аст1, но услуга, которую он хочет получить (например, конференция), сейчас активна на другом астериске аст2. Можно организовать транк аст1 - аст2 и перенаправить звонок в транк. Но можно просто попросить клиента сразу перезвонить на аст2 и получить услугу там, не задействуя более аст1. Клиент любой и зарегистрирован на аст1 и аст2. Такое вообще возможно средствами SIP и астериска? Или я хочу странного?

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 16:34
ded
Выбор линии - с которой делать вызов, средствами самого клиента (телефона).
Второй аккаунт на второй ast2 с тем же внутренним номером? На аппаратных телефонах - самый простой варинт.
Вторая линия - кнопка справа от экрана. Если её нажать - гудок от второго ast2, вызов будет через него:

Изображение

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 16:40
AndyBack
Да, второй аккаунт с тем же номером. Проблема в том что:
1) Это требует действий от пользователя.
2) Клиент может быть сам за транком и ни о каких аккаунтах не знать вообще. Например, звонок идет с PSTN.

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 16:50
ded
AndyBack писал(а):Как сказать клиенту средствами ARI/AGI/AMI/DialPlan чтобы он сделал новый звонок через другой сервер? И возможно ли такое?
exten => 5000,1,NoOp(Conference)
same => n,(действие: Goto(are this conference is available on ast1?:yes)
exten => n,Dial(IAX2/ast2/5000) ; goto conference @ ast2
same => n(yes),ConfBridge(${MEETME_ROOMNUM},,,${MENU_PROFILE}) ; use conference @ ast1

P.S. А давайте в воскресенье отдыхать? А работать в рабочие дни?

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 19:14
gosha
Transfer() из диалплана до ответа на звонок отдаст 302 телефону. В старом добром chan_sip'е по крайней мере )

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 20:25
AndyBack
Да, я видел такую логику в одном из PSTN-шлюзов. Он по получению 302 или истечении задаваемого тайм-аута делал запрос на сервер, указанный у него как резервный и только по неответу давал хангап клиенту. Вопрос как из диал-плана сделать Transfer() на другой сервер? В инете ничего не нашел.

Re: Можно ли перезвонить через другой сервер

Добавлено: 19 май 2024, 21:49
ded
same => n,Transfer(IAX2/ast2/5000)
same => n,NoOp(Result is ${TRANSFERSTATUS})
*CLI> core show application Transfer

-= Info about application 'Transfer' =-

[Synopsis]
Transfer caller to remote extension.

[Description]
Requests the remote caller be transferred to a given desti
IAX2, LOCAL etc) is used, only an incoming call with the s
technology will be transferred. Note that for SIP, if you
is setup, a 302 redirect SIP message will be returned to t
The result of the application will be reported in the ${TR
variable:
${TRANSFERSTATUS}:
SUCCESS: Transfer succeeded.
FAILURE: Transfer failed.
UNSUPPORTED: Transfer unsupported by channel driver.

[Syntax]
Transfer([Tech/]destination)

Re: Можно ли перезвонить через другой сервер

Добавлено: 20 май 2024, 19:02
Zavr2008
Регать на Kamailio телефоны и она уже решает куда направить звонок.
Ну или через Астер транзиты делать.
Всё остальное - пионер-онанизм.

Re: Можно ли перезвонить через другой сервер

Добавлено: 20 май 2024, 20:10
AndyBack
Тогда вопрос: чем Transfer() отличается от Dial() в этой ситуации?

same => n,Transfer(IAX2/ast2/5000)
exten => n,Dial(IAX2/ast2/5000)
В чем разница?

Это относительно мелкая система, чтобы заводить там Камаилио...

Re: Можно ли перезвонить через другой сервер

Добавлено: 21 май 2024, 03:05
ded
Тогда ответ: трансфер Transfer() отдаёт такие ответы в вот эту переменную: ${TRANSFERSTATUS}:
SUCCESS: Transfer succeeded.
FAILURE: Transfer failed.
UNSUPPORTED: Transfer unsupported by channel driver.

Dial() отдаёт состяния в другую переменную - ${DIALSTATUS}

ANSWER: Call is answered. A successful dial. The caller reached the callee.
BUSY: Busy signal. The dial command reached its number but the number is busy.
NOANSWER: No answer. The dial command reached its number, the number rang for too long, then the dial timed out.
CANCEL: Call is cancelled. The dial command reached its number but the caller hung up before the callee picked up.
CONGESTION: Congestion. This status is usually a sign that the dialled number is not recognised.
CHANUNAVAIL: Channel unavailable. On SIP, peer may not be registered.
DONTCALL: Privacy mode, callee rejected the call
TORTURE: Privacy mode, callee chose to send caller to torture menu
INVALIDARGS: Error parsing Dial command arguments