Страница 2 из 2
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 00:35
ded
Всё же это азбука.
ipok писал(а):по внешний нашли внутренний, позвонили ему.
Если он не взял трубку, звонок должен уйти в очередь, которой он принадлежит и начать обзванивать абонентов из его очереди.
Код: Выделить всё
exten => 101,1,Dial(SIP/101,20,t) ; в течение 20 сек будет звонить внутренний 101
exten => 101,n,Queue(600) ; после чего передёт звонить в очередь
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 01:33
ipok
Блин, видимо не могу объяснить.
Все дело в том что я не знаю имя очереди. Допустим есть 50 очередей. В них от 3 до 10 абонентов.
Каждый абонент может принадлежать только одной очереди. Я хочу, зная только внутренний номер, найти очередь и отправить в неё звонок. Делаем все в dialplan.
Изначально идея была такая: есть несколько рабочих групп, минимум 50. В каждой группе по 5-10 человек. Ищем внутренний номер сотрудника по caller id и отправляем звонок менеджеру.
Это сложностей не вызвало.
Теперь добавили следующее: если менеджер не взял трубку или занят, отправляем звонок в его рабочую группу. Пусть звонят все их телефоны. Осложняется это тем, что в разных группах разное количество абонентов.
Как вариант решения вижу через очереди: перебрать все очереди, посмотреть всех их абонентов, найти нужную очередь и перевести на неё звонок. Но как-то это некрасиво.
Или можно проще сделать ?
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 02:35
ipok
Только забыл одну очень важную особенность:
Звонки в группе должны идти не все сразу а последователено.
Т.е. Что-то типа
Не катит, так как в каждом конкретном случае количество Dial будет разным.
Что-то читаю про очереди и не догоняю: linear - линейное распределение вызова.
Возможно ли сделать: если первый оператор не взял трубку в течении 5 секунд, то звонок идёт следующему, и так до окончания очереди?
И совсем дурацкий вопрос: есть ring groups, я правильно понимаю, что я не могу направит звонок на них через dialplan ?
Создал ring group 901, добавил абонентов, настроил распределение вызовов, а вот Dial(SIP/901) не прокатывает.
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 08:42
virus_net
ipok, прежде всего присоединюсь к
ded в том, что вы задаете очень простые вопросы, ответы на которые есть и в книге и на просторах тЫрНеТа.
Диалога с вами далее явно не получится из-за отсутствия у вас базовых знаний.
ipok писал(а):Все дело в том что я не знаю имя очереди.
Т.е. вы хотите сказать, что конфиг и очереди у вас генерятся рандомно ? Сомневаюсь.
ipok писал(а):перебрать все очереди, посмотреть всех их абонентов
Мне не ясно зачем это. Никто не мешает ввести переменную в пире сотрудника, которая будет содержать название его очереди или воспользоваться astdb и хранить это там, и использовать значение переменной там где вам это нужно.
ipok писал(а):Звонки в группе
Вы уж сначала определитесь что вам нужно. Ring groups или queue.
ipok писал(а):И совсем дурацкий вопрос
Совсем дурацкий ответ: вы можете оправить кого угодно куда угодно. Например с помощью Goto.
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 09:24
ipok
Т.е. вы хотите сказать, что конфиг и очереди у вас генерятся рандомно ? Сомневаюсь.
Имя очереди я изначально знаю, но довольно часто сотрудники перекидываются из очереди в очередь, минимум один раз в неделю. Каждый раз править код - это не выход.
Мне не ясно зачем это. Никто не мешает ввести переменную в пире сотрудника, которая будет содержать название его очереди или воспользоваться astdb и хранить это там, и использовать значение переменной там где вам это нужно.
Я могу даже таблицу создать соответствия extension - группе/очереди. Только вероятность того, что кто-то будет менять группу/очередь сотрудника и забудет поменять переменную/описание/значение в таблице довольно высоко. Вариантов действительно есть довольно много, но изначально хотел узнать - может есть простой способ по сотруднику узнать принадлежность его очереди
Вы уж сначала определитесь что вам нужно. Ring groups или queue.
Мне функционала Ring Group Более чем достаточно, но я нигде ни на просторах тырнета ни в книге не нашел как отправить вызов через dialplan в ring group.
Везде предлагают либо
либо
Код: Выделить всё
exten => x,n,Dial(SIP/101,10,t)
exten => x,n,Dial(SIP/102,10,t)
exten => x,n,Dial(SIP/103,10,t)
Мне это не подходит
Поэтому решил смотрю в сторону очередей
Re: Помогите по длине строки в GotoIf
Добавлено: 21 июл 2016, 09:43
ded
ipok писал(а):Я могу даже таблицу создать соответствия extension - группе/очереди. Только вероятность того, что кто-то будет менять группу/очередь сотрудника и забудет поменять переменную/описание/значение в таблице довольно высоко.
Почитали бы Книгу - узнали, что есть нативная база данных, существует уже в Астериске. Куда можно писать инфа и откуда можно считать инфу из диалплана.
CLI>database show
Ищите примеры, пробуйте.
Re: Помогите по длине строки в GotoIf
Добавлено: 22 июл 2016, 08:35
virus_net
ipok писал(а):Мне функционала Ring Group Более чем достаточно
ipok писал(а):Везде предлагают либо ... Мне это не подходит
Брр.... приводите два единственных варианта ринг группы и пишите, что достаточно и не подходит... это как так ? вы же сами себе противоречите.
ipok писал(а):но я нигде ни на просторах тырнета ни в книге не нашел как отправить вызов
virus_net писал(а):вы можете оправить кого угодно куда угодно. Например с помощью Goto.
Asterisk cmd Goto Asterisk cmd GotoIf
Либо вам пора уже раскрыть свое понимание вашей фразы "как отправить вызов" в виду того, что
ded вам ещё на первой странице в первом же посте все написал.
ipok писал(а):но довольно часто сотрудники перекидываются из очереди в очередь
Ну не Святой Дух же их перекидывает то. Так ведь ? Сотрудники же совершают некие действия, чтобы переместиться в другую очередь. Вот там и надо отслеживать перемещение и перезаписывать переменную.
ded писал(а):есть нативная база данных, существует уже в Астериске
я уже предложил это выше, но похоже, что знаний ТС явно недостаточно для реализации задачи, даже с подсказками