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

Проблема с подключением к AMI

Добавлено: 14 сен 2024, 14:11
kamvilena
Есть скрипт на pyton для подключения к asterisk по порту 5038. При запуске выдает сообщение
>>> %Run ami.py
подключились
login OK
Traceback (most recent call last):
File "C:\work\Asterisk\ami.py", line 14, in <module>
data=tc.read_until(b'\n\r\n')
**********************скрипт************
import telnetlib
tc = telnetlib.Telnet(host ='192.168.1.3', port = 5038)
tc.read_until(b'Asterisk Call Manager/7.0.3')
print('подключились')
tc.write(b'Action: Login\n')
tc.write(b'Usernname: admin\n')
tc.write(b'Secret: 123456\n')
tc.write(b'\n')
tc.write(b'\n')
tc.read_until(b'Message: Authentification accepted')
print('login OK')

while True:
data=tc.read_until(b'\n\r\n')
sp_data = (data.decode()).splitlines()
if sp_data[0]=='Event: Hangup':
print(sp_data)
Скрипт запускается из программы Thonny, используется ОС Windows 11. С теми же параметрами для входа можно подключиться из командной строки утилитой telnet на порт 5038 и с помощью Putty (режим RAW). По сути ошибка возникает из-за того, что аутентификация через Thonny не проходит и соединение закрывается. Как исправить?

Re: Проблема с подключением к AMI

Добавлено: 14 сен 2024, 16:05
ded
Если с теми же параметрами для входа можно подключиться из командной строки утилитой telnet на порт 5038 и с помощью putty, но нельзя подключиться из Thonny, то, видимо, проблема в Thonny, и самый верный ход - обратиться к её создателям..

Re: Проблема с подключением к AMI

Добавлено: 14 сен 2024, 22:40
kamvilena
Через putty тоже долго и безуспешно пыталась подключиться, выбирая опцию telnet. Нашла информацию про различия в режимах RAW и telnet. Вот здесь ищу что-то аналогичное, возможно, проблема в считывании знаков пустой строки или др

Re: Проблема с подключением к AMI

Добавлено: 15 сен 2024, 23:33
ded
Дебаг на обеих концах соединения даст более глубокое понимание причин проблемы.
Телнет лучше бы попробовать из командной строки - power shell @ Windows 11.

Re: Проблема с подключением к AMI

Добавлено: 15 сен 2024, 23:43
Zavr2008
Не понятно зачем изобретать очередной велосипед?

https://pypi.org/project/asterisk-ami/

Re: Проблема с подключением к AMI

Добавлено: 17 сен 2024, 14:53
kamvilena
Телнет лучше бы попробовать из командной строки - power shell @ Windows 11 - попробовала, также успешно все работает.
Про дебаг с двух сторон можно поподробнее? в /var/log/asterisk/messages записей про неуспешную аутентификацию не нахожу, по сути ничего про этот процесс вообще не пишется.

pip install asterisk-ami - такая команда у меня не работает. Пробовала иначе: yum install asterisk-ami (не нашлось такого пакета для установки)

Re: Проблема с подключением к AMI

Добавлено: 19 сен 2024, 10:25
ded
Про дебаг.
Если ваш ami.py работает, авторизация проходит, то на той стороне, где он запускается - дебаг можно увидеть натолкав доп. строки для отладки в этот самый ami.py, и сделать выхлоп в журнал, а не stdin.
Второй вопрос "как это сделать?" лежит уже в плоскости курсов "Питон для чайников", что выходит за рамки форума по Астериск, Если рассматривать запуск ami.py из диал-плана Астериска, то это делается через вызов AGI (EAGI, FastAGI)
exten => _X.1,EAGI(ami.py)
Тут можно включить отладку командой

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

CLI> agi set debug on
Ничего не знаю про программу Thonny, но дебаг на её стороне наверняка тоже возможен.

pip - инсталлятор для модулей python, если команды нету, то надо погружаться в дебри Питона, его модули, совместимость, virtual environment, версионность - отдельная галактика.
Method 1: Install PIP on Windows Using get-pip.py

Step 1: Download PIP get-pip.py. Before installing PIP, download the get-pip.py file. ...
Step 2: Installing PIP on Windows. To install PIP, run the following Python command: python get-pip.py. ...
Step 3: Verify Installation. ...
Step 4: Add Pip to Path. ...
Step 5: Configuration.
В среде линукс машин установить pip можно по разному, скачав скрипт get-pip.py например и запустив его самим Питоном.
https://pip.pypa.io/en/stable/installation/

Re: Проблема с подключением к AMI

Добавлено: 24 сен 2024, 14:08
kamvilena
Большое спасибо за подробный ответ, но проблема оказалась банальной - нашла ошибки в коде сценария, "usernname" и "Autentification" вместо "Autentication"