我的办公桌上有一部 Yealink IP 电话,我想远程控制它,这样我就可以从我的电脑拨打电话,而不是直接在电话上输入号码。此链接解释了如何操作:
有2有两种方法。一种是向手机发送 http 请求。另一种方法是发送 SIP 通知消息。
A)发送 HTTP 请求(有效!)
- 首先确保手机配置为允许远程连接
然后只需发出此
wget
请求wget --user admin --password PASSWORD_PHONE http://IP_OF_PHONE/servlet?key=SPEAKER
提出该请求后,电话扬声器键被按下!
B) 发送 SIP 通知消息(不起作用)
这是我想要使用的选项,因为我不想存储用户名和密码。此外,手机的 IP 地址可能会改变。无论如何,这是我已经尝试过的,但由于某种原因,我无法使此选项起作用:
我通过允许手机进行远程控制来执行在部分 (A) 中执行的第一步。
现在 SIP 对等体 Eduardo 已连接,我需要向其发送一个 SIP 通知消息,其正文包含 key=SPEAKER。
我打开
/etc/asterisk/sip_notify.conf
并添加以下上下文:[测试] 事件=>ACTION-URI 内容=>key=SPEAKER
我重新启动了 asterisk,因为我不知道如何重新加载 sip_notify.conf
asterisk -rx "core restart gracefully"
然后在 asterisk CLI 上输入以下命令以发送 sip 通知消息:
sip notify test Eduardo
当我运行该命令时,星号显示:
Sending NOTIFY of type 'test' to 'Eduardo'
但手机从未按下 SPEAKER 键!我可能做错了什么?这是Wireshark捕获的SIP消息!
- 尽管我按照说明操作,但扬声器键却没有被按下!我可能做错了什么?
有用信息:
答案1
经过一整天的尝试,我终于搞清楚了!我缺少内容类型标头!
无论如何,这里是解决方案:
sip_notify.conf 文件应该包含:
[test] Content-Type=>message/sipfrag Event=>ACTION-URI Content=>key=SPEAKER
这条线
Content-Type=>message/sipfrag
很重要!重新启动 asterisk,以便 sip_notify.conf 重新加载
asterisk -rx“核心正常重启”
现在输入这个星号命令:
sip notify test Eduardo
其中 Eduardo 是您要向其发送密钥的 SIP 对等体
所有可用密钥的列表可在此处找到: