VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Помогите по длине строки в GotoIf

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Помогите по длине строки в GotoIf

Сообщение ded »

Всё же это азбука.
ipok писал(а):по внешний нашли внутренний, позвонили ему.
Если он не взял трубку, звонок должен уйти в очередь, которой он принадлежит и начать обзванивать абонентов из его очереди.

Код: Выделить всё

exten => 101,1,Dial(SIP/101,20,t)  ; в течение 20 сек будет звонить внутренний 101
exten => 101,n,Queue(600)           ; после чего передёт звонить в очередь
ipok
Сообщения: 20
Зарегистрирован: 18 май 2016, 21:20

Re: Помогите по длине строки в GotoIf

Сообщение ipok »

Блин, видимо не могу объяснить.

Все дело в том что я не знаю имя очереди. Допустим есть 50 очередей. В них от 3 до 10 абонентов.
Каждый абонент может принадлежать только одной очереди. Я хочу, зная только внутренний номер, найти очередь и отправить в неё звонок. Делаем все в dialplan.

Изначально идея была такая: есть несколько рабочих групп, минимум 50. В каждой группе по 5-10 человек. Ищем внутренний номер сотрудника по caller id и отправляем звонок менеджеру.
Это сложностей не вызвало.

Теперь добавили следующее: если менеджер не взял трубку или занят, отправляем звонок в его рабочую группу. Пусть звонят все их телефоны. Осложняется это тем, что в разных группах разное количество абонентов.

Как вариант решения вижу через очереди: перебрать все очереди, посмотреть всех их абонентов, найти нужную очередь и перевести на неё звонок. Но как-то это некрасиво.

Или можно проще сделать ?
ipok
Сообщения: 20
Зарегистрирован: 18 май 2016, 21:20

Re: Помогите по длине строки в GotoIf

Сообщение ipok »

Только забыл одну очень важную особенность:

Звонки в группе должны идти не все сразу а последователено.

Т.е. Что-то типа

Код: Выделить всё

Dial(SIP/100,10,t)
Dial(SIP/200,10,t)
Не катит, так как в каждом конкретном случае количество Dial будет разным.

Что-то читаю про очереди и не догоняю: linear - линейное распределение вызова.
Возможно ли сделать: если первый оператор не взял трубку в течении 5 секунд, то звонок идёт следующему, и так до окончания очереди?

И совсем дурацкий вопрос: есть ring groups, я правильно понимаю, что я не могу направит звонок на них через dialplan ?
Создал ring group 901, добавил абонентов, настроил распределение вызовов, а вот Dial(SIP/901) не прокатывает.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Помогите по длине строки в GotoIf

Сообщение virus_net »

ipok, прежде всего присоединюсь к ded в том, что вы задаете очень простые вопросы, ответы на которые есть и в книге и на просторах тЫрНеТа.
Диалога с вами далее явно не получится из-за отсутствия у вас базовых знаний.
ipok писал(а):Все дело в том что я не знаю имя очереди.
Т.е. вы хотите сказать, что конфиг и очереди у вас генерятся рандомно ? Сомневаюсь.
ipok писал(а):перебрать все очереди, посмотреть всех их абонентов
Мне не ясно зачем это. Никто не мешает ввести переменную в пире сотрудника, которая будет содержать название его очереди или воспользоваться astdb и хранить это там, и использовать значение переменной там где вам это нужно.
ipok писал(а):Звонки в группе
Вы уж сначала определитесь что вам нужно. Ring groups или queue.
ipok писал(а):И совсем дурацкий вопрос
Совсем дурацкий ответ: вы можете оправить кого угодно куда угодно. Например с помощью Goto.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
ipok
Сообщения: 20
Зарегистрирован: 18 май 2016, 21:20

Re: Помогите по длине строки в GotoIf

Сообщение ipok »

Т.е. вы хотите сказать, что конфиг и очереди у вас генерятся рандомно ? Сомневаюсь.
Имя очереди я изначально знаю, но довольно часто сотрудники перекидываются из очереди в очередь, минимум один раз в неделю. Каждый раз править код - это не выход.
Мне не ясно зачем это. Никто не мешает ввести переменную в пире сотрудника, которая будет содержать название его очереди или воспользоваться astdb и хранить это там, и использовать значение переменной там где вам это нужно.
Я могу даже таблицу создать соответствия extension - группе/очереди. Только вероятность того, что кто-то будет менять группу/очередь сотрудника и забудет поменять переменную/описание/значение в таблице довольно высоко. Вариантов действительно есть довольно много, но изначально хотел узнать - может есть простой способ по сотруднику узнать принадлежность его очереди
Вы уж сначала определитесь что вам нужно. Ring groups или queue.
Мне функционала Ring Group Более чем достаточно, но я нигде ни на просторах тырнета ни в книге не нашел как отправить вызов через dialplan в ring group.

Везде предлагают либо

Код: Выделить всё

exten => x,n,Dial(SIP/101&SIP/102&SIP/103) 
либо

Код: Выделить всё

exten => x,n,Dial(SIP/101,10,t) 
exten => x,n,Dial(SIP/102,10,t) 
exten => x,n,Dial(SIP/103,10,t) 
Мне это не подходит

Поэтому решил смотрю в сторону очередей
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Помогите по длине строки в GotoIf

Сообщение ded »

ipok писал(а):Я могу даже таблицу создать соответствия extension - группе/очереди. Только вероятность того, что кто-то будет менять группу/очередь сотрудника и забудет поменять переменную/описание/значение в таблице довольно высоко.
Почитали бы Книгу - узнали, что есть нативная база данных, существует уже в Астериске. Куда можно писать инфа и откуда можно считать инфу из диалплана.
CLI>database show
Ищите примеры, пробуйте.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Помогите по длине строки в GotoIf

Сообщение virus_net »

ipok писал(а):Мне функционала Ring Group Более чем достаточно
ipok писал(а):Везде предлагают либо ... Мне это не подходит
Брр.... приводите два единственных варианта ринг группы и пишите, что достаточно и не подходит... это как так ? вы же сами себе противоречите.
ipok писал(а):но я нигде ни на просторах тырнета ни в книге не нашел как отправить вызов
virus_net писал(а):вы можете оправить кого угодно куда угодно. Например с помощью Goto.
Asterisk cmd Goto Asterisk cmd GotoIf
Либо вам пора уже раскрыть свое понимание вашей фразы "как отправить вызов" в виду того, что ded вам ещё на первой странице в первом же посте все написал.
ipok писал(а):но довольно часто сотрудники перекидываются из очереди в очередь
Ну не Святой Дух же их перекидывает то. Так ведь ? Сотрудники же совершают некие действия, чтобы переместиться в другую очередь. Вот там и надо отслеживать перемещение и перезаписывать переменную.
ded писал(а):есть нативная база данных, существует уже в Астериске
я уже предложил это выше, но похоже, что знаний ТС явно недостаточно для реализации задачи, даже с подсказками
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH