老实说,我考虑了很长时间才出版此材料。 对于那些知道如何使用AMI Asterisk的人来说,这里没有什么有趣的。 对于刚开始做某事的人,他们不太可能理解我的代码(尽管我试图写清楚)。 我喜欢这样的评论:“为什么要使用Habr做笔记?”。 另一方面,剪切下方显示的脚本可能是某人的起点。 该脚本除了将所有事件从AMI发送到控制台并可以对其进行过滤之外,什么也不做。 例如,我在控制台中显示属于“ zadarma-in”或“ sibseti_in”上下文中的所有调用。 如果有兴趣的话,请问下:
实时任务是查看呼叫来自哪个中继线,用户按下ivr中的哪个按钮,接听呼叫的人等等。 很长时间以来,我一直想尝试使用Python的AMI,在此之前,我对Bash有所了解,然后组织了回电。
在翻阅各种现成的库之后,我很快意识到没有一个库适合我。 结果,他以脚本的形式发明了自己的“自行车”,该脚本将所有信息从AMI发送到json。 使用标准的Python库。 优点在于,采用这种形式很容易接收和解析任何事件,并且不会丢失指向特定呼叫的链接。
第一个脚本仅打印属于“ zadarma-in”或“ sibseti_in”上下文中的任何事件。
脚本№1import telnetlib import json import re
第二个脚本将所有事件写入控制台,同时查看这两个脚本,很清楚需要更改哪些内容才能获得所需的结果。 如果不清楚,则需要在函数“ def telnet_for_string(string)”中解析json“ string [mes]”:
脚本编号2 import telnetlib import time import json import re