Страница 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
вызов

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

call(NUM,'out_context','s','play')
в диаплане

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

[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, зачем это делается вообще?
Где передается номер на который необходимо звонить, номер через который звонить, канал через который звонить??