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

Имя принявшего звонка в записе

Добавлено: 09 янв 2016, 19:53
musho5755
Ситуация такова. Есть 8 канальный Goip. Звонки попадают в сим, потом транслируются в Voip номер(Forwarding to VoIP Number, Use CID as SIP caller ID) (на пример 2000), а когда 2000 вызываеться в астериск, он звонит на 101, 102, ... софтфоны. У каждого софтфона есть свой оператор. Надо, чтобы в имя файла записи было написано имя оператора, который ответил на звонок.

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

[incoming]

exten => 2000,1,Background(/var/lib/asterisk/moh/voicemail/bari)
exten => 2000,2,Set(fname=${STRFTIME(${EPOCH},,%d.%m.%Y_%H:%M)}_${CALLERID(dnid)}_${CALLERID(num)})
exten => 2000,3,MixMonitor(/var/www/records/${fname}.wav)
exten => 2000,4,Dial(SIP/101&SIP/102&SIP/103,,t&m)
exten => 2000,5,Hangup
exten => h,1,System(/usr/bin/lame -b 16 -silent /var/www/records/${fname}.wav /var/www/records/${fname}.mp3)
exten => h,n,System(/bin/rm -r /var/www/records/${fname}.wav)
в ${CALLERID(dnid)} пишется 2000, а надо, чтобы было написано на пример 103. Как сделать так, чтобы запись началось после поднятия трубки, чтобы fname= определил кто поднял? и как в имя файла написать это? Заранее спасибо. Только пожалуйста, если можете помочь, помогите, а не посылайте в гугл. я там замучился очень. И прошу знатокам строго не судить за вопрос.

Re: Имя принявшего звонка в записе

Добавлено: 09 янв 2016, 20:35
sip-queue
Например так:

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

exten => h,n,Set(channel=${CDR(dstchannel):4})
exten => h,n,Set(var=${CUT(channel,-,1)})

Re: Имя принявшего звонка в записе

Добавлено: 09 янв 2016, 22:51
ded
musho5755 писал(а):Есть 8 канальный Goip. Звонки попадают в сим, потом транслируются в Voip номер(Forwarding to VoIP Number, Use CID as SIP caller ID) (на пример 2000), а когда 2000 вызываеться в астериск, он звонит на 101, 102, ... софтфоны. У каждого софтфона есть свой оператор. Надо, чтобы в имя файла записи было написано имя оператора, который ответил на звонок..
Вот звонок от Маши (+7 901 2323232), которая набрала один из номеров симок, которые работают в GoIP - +7 911 5656565. Откуда вызов пошёл в Астериск, где указана обработка входящих в группе операторов 101-102-103
Изображу так:
Маша <+7 901 2323232> ---> GoIP-sim1 <+7 901 2323232> ---> [Asterisk group call] ---> Smooth operator <101>

Тут вам надо бы отобразить в CDR все эти номера, полагаю: кто звонил, на какой номер и кто поднял.
CID ---> DID ---> extension num.
Каждая инстанция имеет имена и номера: CID name <CID num>, и в этом определении ваш промежуточный номер 2000 не имеет никакого смысла. Туда надо забить в GoIP номер сим карты, которая работает в этом порту. Это гораздо вразумительней.
В стандартных, не самописных конфигах, входящих сценариях вызовов маршрутизация делается по DID (в вашем случае - 2000), очень настойчиво рекомендую сменить! И при выполнении шагов - на 2-м шаге Вы определили имя файла, куда вписали все параметры, Но звонок ещё не пошёл операторам 101-102-103! И неизвестно - кто из них снимет трубку! И как Вы собрались записать номер и/или имя оператора, когда ещё не ясно кто это будет? Неужели Вы этого не видите?

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

exten => 2000,1,Background(/var/lib/asterisk/moh/voicemail/bari)
exten => 2000,2,Set(fname=${STRFTIME(${EPOCH},,%d.%m.%Y_%H:%M)}_${CALLERID(dnid)}_${CALLERID(num)})
exten => 2000,3,MixMonitor(/var/www/records/${fname}.wav)
exten => 2000,4,Dial(SIP/101&SIP/102&SIP/103,,t&m)

Re: Имя принявшего звонка в записе

Добавлено: 09 янв 2016, 23:00
Aven
Как сделать так, чтобы запись началось после поднятия трубки
Поставить параметр MixMonitor'а.
определил кто поднял?
Переименовать файл после окончания записи в h экстеншене. Имя канала звонившего есть в переменных канала.

Re: Имя принявшего звонка в записе

Добавлено: 10 янв 2016, 08:51
virus_net
Aven писал(а):Переименовать файл после окончания записи в h экстеншене
ИМХО: лучше стартовать MixMonitor после того как оператор снял трубку. Тогда и файл будет сразу именованный и гудков дозвона в записи не будет.
Упреждая вопрос "как" - прочитайте о ключах в команде Dial.

Re: Имя принявшего звонка в записе

Добавлено: 10 янв 2016, 12:47
musho5755
MixMonitor уже стартует после поднятие трубки. но под конец не получается пыхнуть имя поднявшего трубку оператора в файл
ded писал(а): входящих сценариях вызовов маршрутизация делается по DID (в вашем случае - 2000), очень настойчиво рекомендую сменить!
почему?
Aven писал(а): Переименовать файл после окончания записи в h экстеншене
вот это хочу узнать. Что нужно поставить?

Re: Имя принявшего звонка в записе

Добавлено: 10 янв 2016, 13:39
Aven
Файлы переименовываются командой mv.

Re: Имя принявшего звонка в записе

Добавлено: 10 янв 2016, 13:42
Wapo
Выбирайте вариант:
1. Чтение книги: http://asterisk.ru/knowledgebase/books
2. Даем команду core show application dial
3. Не "ожидая милости от природы(форума)" включаем мозги и ... используем m для запуска макро в момент "поднятия трубки" ОПЕРАТОРОМ а не астером в момент прихода звонка, там же ставим что-то типа Chandump, смотрим какие есть переменные и ............

Премию, которую получите, возможно, ОБЯЗАТЕЛЬНО перечислите сообществу.

Re: Имя принявшего звонка в записе

Добавлено: 11 янв 2016, 07:58
virus_net
musho5755 писал(а):MixMonitor уже стартует после поднятие трубки
Правда ? Это в какой из этих двух строк написано ?
ded писал(а):exten => 2000,3,MixMonitor(/var/www/records/${fname}.wav)
exten => 2000,4,Dial(SIP/101&SIP/102&SIP/103,,t&m)
Диалплан выполняется ПОСЛЕДОВАТЕЛЬНО.

Re: Имя принявшего звонка в записе

Добавлено: 11 янв 2016, 09:15
musho5755
имею виду, что изменил уже