我正在尝试编写一些自动化测试,向我的本地 Asterisk 实例调用电话,然后检查接收 SIP 客户端是否已收到调用。
据我了解,我可以使用 Asterisk 管理器创建去电事件。为此,我一直在尝试使用 Python 的“pyst”库。
我无法找到任何有关如何实现此方案的工作示例。根据我设法收集的信息,我想出了这个脚本:
from asterisk import manager
HOST = 'localhost'
PORT = 5068
m = manager.Manager()
m.connect( HOST )
m.login( 'admin', 'temp123' )
targetURL = '441610000001'
response = m.originate(
targetURL ,
's',
context='outgoing',
priority='1'
)
print m.status()
m.logoff()
m.close()
此脚本报告来自 Asterisk Manager 的“成功”响应,但实际上并未创建呼出电话。
有人用 python 写过脚本吗?
我只熟悉 Python 语言,所以其他语言的解决方案对我帮助不大!
请再次阅读文档
您程序中的“Targeturl”实际上是 channel ,因此在您的代码中它没有 channel 类型和主机(如果是那个 sip)。
有效的例子是:
targetURL = 'SIP/441610000001@myprovider_name'
targetURL = 'Local/441610000001@outbound_context'
上下文“outbound”已有效并已传递调用。
PYST 是开源框架。如果您真的“熟悉”python,我建议您阅读 originate 方法的源代码并使用 Asterisk 文档检查它发送的内容
http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate
注意:如果您对 asterisk 本身没有一般知识,那么使用像 PYST 这样的框架来编写 asterisk 程序是一个非常糟糕的主意。首先你需要阅读 Asterisk 书。
我是一名优秀的程序员,十分优秀!