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

Вызов абонента через sip и ami python

Добавлено: 10 мар 2021, 13:12
nonadminus
Добрый день! Появилась задача написать скрипт для обзвона клиентов.

Суть задачи:
1. запускается python скрипт, который читает файл с номерами. каждый номер - это номер кому следует позвонить
2. скрипт отдает этот номер на астер через ami
3. asterisk в свою очерередь должен позвонить клиенту через sip задармы и проиграть подготовленную запись с интерачтивным меню

Так вот, с IVR меню я могу разобраться, но вот с написанием dialplan возникли трудности..

Что имеем

sip.conf c настройками zadarma (в настройках callerid у zadarma указан мобильный телефон)

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

[zadarm]
type = peer 
defaultuser = 214181
secret = secret
host = sip.zadarma.ru
context = zvonar
fromuser = 214181
fromdomain = sip.zadarma.com
disallow=all
allow = alaw
allow = ulaw
nat = force_rport,comedia
canreinvite = no
dtmfmode = rfc2833
qualify = yes
manager.conf c юзером для таких дел

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

[zvonar]
secret = 9008
permit = 0.0.0.0/0.0.0.0
read = system,call,log,verbose,command,agent,user,originate
write = system,call,log,verbose,command,agent,user,originate
extensions.conf контекст для обработки исходящего звонка

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

[zvonar]
exten => s,1,NoOp(Звонок через zadarma на номер +7${EXTEN:1})
same => n,Dial(SIP/zadarm/+7${EXTEN:1},60)
same => n,Hangup
python скрипт для передачи номера в asterisk на который нужно позвонить

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

#!/usr/bin/python
# -*- codding: utf-8 -*-

from asterisk.ami import AMIClient
from asterisk.ami import SimpleAction

client = AMIClient(address='192.168.0.6',port=5038)
client.login(username='zvonar',secret='secret')

action = SimpleAction(
    'Originate',
    Channel='SIP/zadarm',
    Exten=89039904644,
    Priority=1,
    Context='default',
    CallerID='+79520031967',
)
client.send_action(action)
client.logoff()

При запуске скрипта получаю

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

 == Manager 'zvonar' logged on from 192.168.0.99
  == Using SIP RTP CoS mark 5
    -- Called zadarm
    -- Got SIP response 486 "Busy" back from 185.45.152.161:5060
    -- SIP/zadarm-00000114 is busy
  == Manager 'zvonar' logged off from 192.168.0.99
Подскажите плиз как приготовить dialplan чтобы астериск звонил через sip на указанный номер

Re: Вызов абонента через sip и ami python

Добавлено: 11 мар 2021, 09:56
nonadminus
Спасибо, разобрался уже) Сделал по другому

Re: Вызов абонента через sip и ami python

Добавлено: 25 май 2023, 12:41
larens53
Здравствуйте! Абсолютно аналогичная ситуация, генерирую с помощью YC текст в .wav, в Action передаю номере телефона, на который нужно позвонить, указал SIP. В extensions.conf указал аудиофайл для воспроизведения, но звонок не совершается. Документацию к ami читал, пробовал по разному, но всё не выходит. Может кто подскажет, как реализовать подобное или в чем допускать могу ошибку?

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

def make_call(phone_numbers):
    try:
            action = SimpleAction(
                'Originate',
                Channel='SIP/мойсип',
                Context='debt_autodial',
                Exten=phone_numbers,
                Priority='1',
                Callerid='1234'
            )
            response = ami_client.send_action(action)
extension.conf

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

[debt_autodial]
exten =>s,1,Answer()
same => n,Wait(1)
same => n,Playback(/home/alpha/debt_audio)
same => n,Hangup()
manager.conf

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

[autodial_usr]
secret = 12345
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/255.255.255.0
read = system, call, log, verbose, command, agent, user, originate
write = system, call, log, verbose, command, agent, user, originate

Re: Вызов абонента через sip и ami python

Добавлено: 25 май 2023, 14:45
ded

Re: Вызов абонента через sip и ami python

Добавлено: 26 май 2023, 12:10
Zavr2008
Неблагодарная тема, правильнее грохнуть ее.