Страница 1 из 2
Необходимо напистать простую программу pjsip
Добавлено: 20 июл 2014, 01:35
ingfa
Необходима ваша помощь в написании кусочка кода для программы, которая звонила бы на определенный номер sip и проигрывала туда файл wav
бросала трубку через 30 сек. пример кода необходим на python 2.7.6. на сайте модуля нашел только пример кода для проигрывания на проигрыватель.
http://www.pjsip.org/pjmedia/docs/html/ ... file_c.htm
Re: Необходимо напистать простую программу pjsip
Добавлено: 20 июл 2014, 11:05
ded
Re: Необходимо напистать простую программу pjsip
Добавлено: 20 июл 2014, 12:54
denis21
Но если это не в целях спама, а в целях, например, вызвал человек такси, машина приехала. Приходит дозвон клиенту, мол выходите?)
Или, таксист заблудился, (Ну реально, на практике бывают хоть и редко такие вещи даже с навигатором) сообщает об этом в диспетчерскую, а на диспетчерской идёт дозвон клиенту, сообщается, "сейчас вы будете соединены с водителем"...
Автоматизация таких задач классно экономит время самих диспетчеров, которые за место ручного дозвона могут принимать новые заказы.
Я бы лучше сказал, это слишком индивидуальные решения, которые, соглашусь, распространять не стоит свободно.
Re: Необходимо напистать простую программу pjsip
Добавлено: 20 июл 2014, 13:51
ingfa
Нет это система оповещения о неисправности, на оборудовании связи. А конкретно задумка такая. Если на электропитающей установке имеется авария то программа формирует звонок через ip атс оперативному персоналу. 1 номер и много wav файлов.
Re: Необходимо напистать простую программу pjsip
Добавлено: 20 июл 2014, 15:38
zzuz
Пример на основе библиотеки pyst
Код: Выделить всё
from asterisk import agi,manager
def call(out_num,out_context,in_num,in_context,in_prio='1',vars=[]):
m=manager.Manager()
m.connect('localhost')
m.login('admin',get_conf())
cdict={"Action": "Originate",
'Channel': 'Local/%s@%s/n' % (out_num,out_context),
'exten' : '%s' % (in_num),
'context' : '%s' % (in_context),
'priority' : '%s' % (in_prio),
'async' : 'False',
'Variable' : vars,
}
call=m.send_action(cdict)
m.close()
return call
вызов
в диаплане
Код: Выделить всё
[play]
exten => s,1,Answer()
exten => s,n,Playback(...)
Re: Необходимо напистать простую программу pjsip
Добавлено: 21 июл 2014, 17:18
ingfa
Я так понимаю соединение идет через manager, логин admin а где же пароль?
Re: Необходимо напистать простую программу pjsip
Добавлено: 21 июл 2014, 19:37
zzuz
Код: Выделить всё
def get_conf(m_conf='/etc/asterisk/manager.conf'):
conf=ConfigParser()
conf.read(m_conf)
return conf.get('admin','secret')
Re: Необходимо напистать простую программу pjsip
Добавлено: 03 авг 2014, 16:05
ingfa
А если порт отличный от 5038, он что читается из manager.conf?
И такой вопрос, если пароль читаем из manager.conf, то если мне необходимо запустить программу не на машине с астериском, мне его нужно скопировать (manager.conf)?
Re: Необходимо напистать простую программу pjsip
Добавлено: 03 авг 2014, 16:37
zzuz
Внесите необходимые изменения в функции. Класс Manager() позволяет переопределять порт. Необязательно использовать файл manager.conf . можете использовать любой другой. Направление я Вам подсказал.
Re: Необходимо напистать простую программу pjsip
Добавлено: 03 авг 2014, 18:44
ingfa
У меня такие к вам вопросы
Что мы передаем функции call в качестве параметров и аргументов?
что мы передаем функции get_conf в качестве параметров и аргументов, и почему она возвращает две строки 'admin','secret' если в функции call есть такая запись m.login('admin',get_conf()) ???
Каким образом идет считывание файла manager.conf, зачем это делается вообще?
Где передается номер на который необходимо звонить, номер через который звонить, канал через который звонить??