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

originate, каналы и CDR - полный бардак

Раздел для разработчиков для обсуждения программных и аппаратных продуктов и их реализации.

Модератор: april22

Re: originate, каналы и CDR - полный бардак

Сообщение Aven » 12 июл 2011, 23:04

Код: выделить все
Action: Originate
Channel: LOCAL/101@orig
Context: office
Priority: 1
Exten: 8495XXXXXXX


Код: выделить все
[orig]
exten => _X.,1,Goto(office,${EXTEN},1)


office - контекст прописан на телефонах.
Переход в h экстеншн идет на исходном LOCAL/101@orig канале и на SIP/101.
А убрать переход с LOCAL/101@orig как я понимаю нельзя?
Решения телефонии на базе Asterisk || http://it-need.ru
Аватар пользователя
Aven
 
Сообщений: 798
Зарегистрирован: 28 янв 2011, 17:20

Re: originate, каналы и CDR - полный бардак

Сообщение Aven » 13 июл 2011, 12:43

Я знаю где он происходит, факт, что он происходит для двух каналов.
Выкрутился, условием в h, если канал локальный - не выполняем действия в h

Приложения для досрочного прерывания диалплана как я понимаю нет, пришлось делать Goto на последнюю строчку.
Решения телефонии на базе Asterisk || http://it-need.ru
Аватар пользователя
Aven
 
Сообщений: 798
Зарегистрирован: 28 янв 2011, 17:20

Re: originate, каналы и CDR - полный бардак

Сообщение Vslav1 » 16 ноя 2011, 13:14

Мне понравилась идея делать Dial-ы через интерфейс AMI вместо Originate
Решил попробовать, вот код:
Код: выделить все
Query=Action: AGI
Channel: local/2709@from-probe
Command: Dial SIP/2709@from-probe|30|rtThHkK


В ответ получаю сообщение, что нет такого канала:
Код: выделить все
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted

Response: Error
Message: Channel local/2709@from-probe does not exists or cannot get its lock

Response: Goodbye
Message: Thanks for all the fish.


Почему не создаётся канал?
Из этого же контекста команда Originate у меня выполняется без проблем.
Кто пробовал из AMI делать Dial, подскажите пожалуйста, что не так. :?:
Vslav1
 
Сообщений: 15
Зарегистрирован: 16 ноя 2011, 12:02

Re: originate, каналы и CDR - полный бардак

Сообщение zzuz » 16 ноя 2011, 13:18

Код: выделить все
Channel: local/2709@from-probe
Command: Dial SIP/2709@from-probe|30|rtThHkK


Что это? Что Вы этим хотите сделать?
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1572
Зарегистрирован: 21 сен 2010, 13:33

Re: originate, каналы и CDR - полный бардак

Сообщение Vslav1 » 17 ноя 2011, 10:54

Эта комбинация нужна чтобы сделать делать Dial :arrow: через интерфейс AMI.
В отличие от Originate команды Dial в AMI нет :( , но есть возможность асинхронного выполнения AGI команд:
Код: выделить все
CLI> manager show commands
. . .
AGI              agi,all          Add an AGI command to execute by Async AGI


Если опустить строку с параметром Channel в надежде что он создастся сам, то возникает такая ошибка :idea: :
Код: выделить все
Response: Error
Message: Both, Channel and Command are *required*


Значит указывать канал нужно.
Осталось понять как :?:


P.S. Уважаемый zzuz, большая просьба не предлагать создать call файл, и не рассказывать что Вы в своём коллцентре так делаете и это даёт очень хорошее быстродействие. ;)
Vslav1
 
Сообщений: 15
Зарегистрирован: 16 ноя 2011, 12:02

Re: originate, каналы и CDR - полный бардак

Сообщение ded » 17 ноя 2011, 12:03

Уважаемый Vslav1!
Коллега zzuz указал Вам на
Command: Dial SIP/2709@from-probe|30|rtThHkK
Это неверный синтаксис, неужели нужно специально указывать что и как неправильно?
ded
 
Сообщений: 13949
Зарегистрирован: 26 авг 2010, 19:00

Re: originate, каналы и CDR - полный бардак

Сообщение Vslav1 » 17 ноя 2011, 19:19

Уважаемый ded!
Поясните, а синтаксисе ли дело?

Вот как я обычно делаю Dial через AGI:
Код: выделить все
$ret=$agi->exec_dial('SIP', $dnis.OUT_CONTEXT, TIMEOUT, 'rtThHkK');

Но AGI то вызывается когда канал УЖЕ ЕСТЬ!

Если это же делать через AMI то наверное правильнее с EXEC вот так:
Query=Action: AGI
Channel:
nonexistent_сhannel
Command: EXEC Dial SIP/2709@from-probe|30|rtThHkK

А проблема в том, что нельзя сделать Dial для несуществуюшего канала.
Сможете ответить:
Как в Asterisk создать канал (Через AMI)? :?:
Vslav1
 
Сообщений: 15
Зарегистрирован: 16 ноя 2011, 12:02

Re: originate, каналы и CDR - полный бардак

Сообщение Vslav1 » 17 ноя 2011, 19:33

Поясню зачем это нужно - для проверки работоспособности городского номера,
на котором есть IVR меню.
Скрипт запускаем с некоторой периодичностью
и делает попытку дозвона на проверяемый номер.
Анализируем статус канала
Если дозвонились и попали в IVR, то сразу делаем отбой.
Если не дозвонились за некоторое время, то тоже делаем отбой
и оповещаем персонал. :shock:

Итак вот один из путей сделать изходящий звонок, подключившись серез интерфейс AMI.
Инициируем звонок так:
AMI запрос:
Код: выделить все
Action: Command
Command: console dial 4991234567@from-probe

AMI ответ:
Код: выделить все
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted

Response: Follows
Privilege: Command
--END COMMAND--

Event: Newchannel
Privilege: call,all
SequenceNumber: 1608638
File: channel.c
Line: 972
Func: __ast_channel_alloc_ap
Channel: Console/dsp
ChannelState: 5
ChannelStateDesc: Ringing
CallerIDNum:
CallerIDName:
AccountCode:
Exten: 4991234567
Context: from-probe
Uniqueid: 1321540734.77643


Потом через некоторое время узнаём статус канала так:
AMI Запрос:
Код: выделить все
Action: Status
Channel: SIP/4991234567-0001278b

AMI Ответ:
Код: выделить все
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted

Response: Success
Message: Channel status will follow

Event: Status
Privilege: Call
Channel: SIP/4991234567-0001278b
CallerIDNum: 4991234567
CallerIDName: <unknown>
Account:
State: Up
BridgedChannel: Console/dsp
BridgedUniqueid: 1321540859.77660
Uniqueid: 1321540859.77661

Event: StatusComplete
Items: 1

И когда узнали отбиваемся:
AMI Запрос:
Код: выделить все
Action: Hangup
Channel: SIP/4991234567-0001278b

AMI Ответ:
Код: выделить все
Asterisk Call Manager/1.1
Response: Success
Message: Authentication accepted

Response: Success
Message: Channel Hungup


Можно ли как-то сделать Dial, чтобы сразу узнать ИМЯ_КАНАЛА или руками задать его ?
Сейчас, когда я всё это проделываю, то подсматриваю его в консоли через
core show channels

Очень не хочется использовать ловлю событий (Events) на интерфейсе AMI.
Общеизвестно, что при большой нагрузке некоторые события просто теряются. :(
Vslav1
 
Сообщений: 15
Зарегистрирован: 16 ноя 2011, 12:02

Re: originate, каналы и CDR - полный бардак

Сообщение ded » 17 ноя 2011, 19:48

Если дозвонились и попали в IVR, то сразу делаем отбой.
Если не дозвонились за некоторое время, то тоже делаем отбой
Могу предположить зачем Вы это делаете.
Пишете ЕЩЁ_ОДИН_АВТООБЗВОН?
Думаю да, поэтому ответов не будет, по принципиальным соображениям.
ded
 
Сообщений: 13949
Зарегистрирован: 26 авг 2010, 19:00

Re: originate, каналы и CDR - полный бардак

Сообщение zzuz » 18 ноя 2011, 01:30

Я вот тоже не понимаю , как вести диалог с автором , если он занимается ерундой.
Для php - AGI настолько примитивен , что не разобраться в методах класса ... промолчу.
http://phpagi.sourceforge.net/phpagi2/d ... dexec_dial
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1572
Зарегистрирован: 21 сен 2010, 13:33

След.

Вернуться в Разработка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

© 2008 — 2019 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH