Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Звонок на внутренний номер из Dialplan и обход автоответчика

0

Добрый день, возник следующий вопрос.

Допустим имеется следующий call-файл (для простоты объяснений):

Channel: Local/s@custom-call
MaxRetries: 0
RetryTime: 15
WaitTime: 20
Context: custom-from-internal
Extension: +7961XXXXXXX
Priority: 1
Set:qNumber=111
,где qNumber - номер очереди.

[custom-call]
exten => s,1,Set(qNumber=${qNumber})
same => n,Queue(${qNumber},n)

[from-queue]
exten => _X.,1,Set(QAGENT=${EXTEN})
same => n,Set(GLOBAL(DIAL_OPTIONS)=D(*12))
same => n,GoTo(from-internal,${EXTEN},1)

[custom-from-internal]
exten => _X.,1,GoTo(from-internal,${EXTEN},1)

Пояснение: контексты я упростил, для понимания сути.

Имеется очередь 111 Static agent: +7XXXXXXXXXX (Какой-нибудь офисный общий номер)

Задача в следующем: Как видно из Dialplan, нужно чтоб звонок уходил на определенный внутренний номер (в примере 12), и уже его связывал с Extension(+7961XXXXXXX), но очевидно, что звонок сначала возьмёт офисный IVR, и, соответственно, будет считаться принятым и сразу же пойдёт на Extension.

Нужно, чтобы звонок ушёл на Extension только после того, как ответит внутренний номер.

Реализация через очереди должна остаться.

удалить закрыть спам изменить тег редактировать

спросил 2015-04-15 11:42:16 +0400

Zaak Gravatar Zaak
1 5 1

обновил 2015-04-15 11:43:10 +0400

Comments

Callback реализуете ?

zzuz ( 2015-04-15 13:23:12 +0400 )редактировать

Да, не трудно догадаться :)

Zaak ( 2015-04-15 13:30:58 +0400 )редактировать

На этом форуме я уже писал про то, как это сделать. Поищите.

zzuz ( 2015-04-15 14:10:56 +0400 )редактировать

3 Ответа

0

[Изменено] Суть понятна, НО в очереди у меня прописан офисный номер, то есть какой-то один общий. Звонок на внутренний номер осуществляется посредством DTMF, но в таком случае канал будет ANSWERED сразу же как звонок ушёл на офисный номер и там разговаривает их местный IVR, ожидая ввода внутреннего номера. Как мне получить ответ после DTMF? вот это мне не ясно...

ссылка удалить убрать флаг спам (1) редактировать

ответил 2015-04-15 13:30:33 +0400

Zaak Gravatar Zaak
1 5 1

обновил 2015-04-15 15:13:25 +0400

Comments

Задача то простая - соединить внутреннего оператор в офисе с каким-нибудь внешним абонентом.

Zaak ( 2015-04-15 15:14:33 +0400 )редактировать

вам же написали как. если все еще не ясно, ищите здесь "книги" или нанимаете когото с алгоритмическим мышлением.

meral ( 2015-04-16 21:12:30 +0400 )редактировать

Как мне кажется, zzuz описал реализацию, когда я звоню операторам своего офиса, мне же необходимо звонить на внешний офисный номер, затем там донабрать внутреннего оператор, с помощью DTMF, и уже после того, как послал DTMF, узнать ответил ли оператор, вот это мне не ясно как реализовать, Именно сам факт ответа номера, который донабрали.

Zaak ( 2015-04-17 16:51:10 +0400 )редактировать

мне кажется вам ответили на вопрос который вы задали. то, что спосить вы хотели не то, это ВАША проблема. вы никак не можете узнать на удаленной системе неподконтрольной вам ответил ли оператор. кроме варианта написать систему ИИ разбирающую голосовой поток.

meral ( 2015-04-18 05:32:01 +0400 )редактировать
0

вообще задача какаято мутная. есть подозрение что вы неправильно формулируете.

но фиг с ним.

можно сделать так.

перед очередью определяете переменную __ACHANNEL=${CHANNEL(name)}

делает два звонка, один идет в какойто диалплан который крутит wait(1), проверка на SHARED(${ACHANNEL},ANSWERED)

второй идет на внутренний номер, по ответу макросом выставляет SHARED(${ACHANNEL},ANSWERED)

ссылка удалить спам редактировать

ответил 2015-04-15 14:37:06 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

Чтобы выяснить в очереди ответил ли оператор , либо нет, то нужно вызвать при ответе оператора контекст, где будет расшариваться переменная , указывающая на ответ. В ожидании обратного вызова нужно следить за этой переменной и делать исходящий вызов, когда оператор ответит на очередь. Для этого Вам поможет реализация операторов в очереди через Local , опция команды Dial(,,U()) . А также функции наследования между каналами IMPORT() и SHARE() .

Задача коммерческая , поэтому примеров кода не будет.

ссылка удалить спам редактировать

ответил 2015-04-15 14:20:47 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2015-04-15 11:42:16 +0400

Просмотрен: 564 раз

Обновлен: Apr 15 '15

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.