首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在星号PBX上获取用于传出呼叫的sip报头

在星号PBX上获取用于传出呼叫的sip报头
EN

Stack Overflow用户
提问于 2018-09-26 23:37:15
回答 2查看 3.9K关注 0票数 0

这就是我的拨号计划(/etc/asterisk/extensions.conf)的样子:

代码语言:javascript
代码运行次数:0
运行
复制
[default]
  exten => _X.,1,NoOp(New call from ${EXTEN} ! )
  same => n,NoOp( The header X-Twilio-CallSid =  ${SIP_HEADER(X-Twilio-CallSid)})
  same => Dial(SIP/SomePeer)
  ... etc

由于函数标头,我能够获得我的提供者发送给我的呼叫的id。这是我使用WireShark捕获的第一个数据包:

换句话说,${SIP_HEADER(X-Twilio-CallSid)} = ACbccc967c48dda15d8d1c9b34961d19a0

--这对来电非常有用。现在我的问题是打电话。在响应调用之前,sip报头X-Twilio-CallSid不存在。,一旦呼叫被应答,我如何读取那个标头?,我尝试过在呼叫挂断后放置${SIP_HEADER(X-Twilio-CallSid)}。分析通过Wireshark的通信量,消息头出现在INVITE请求之后。

EN

回答 2

Stack Overflow用户

发布于 2018-09-30 15:41:24

SIP_HEADER功能只适用于一个数据包-入站第一次邀请消息。

您已经使用c/c++编写了自己的函数,或者使用了其他一些软件,如homer/sipcapture。

票数 1
EN

Stack Overflow用户

发布于 2018-10-02 23:17:19

我还没有测试这一点,但是根据医生的说法,您可以将应答后处理程序编写为宏(使用M())或GoSub (使用U()):

代码语言:javascript
代码运行次数:0
运行
复制
[outbound-twilio]
exten => _X.,1,Dial(SIP/${EXTEN}@twilio-trunk,,M(post-answer))

[macro-post-answer]
exten => s,1,Verbose("Answer header shows ${SIP_HEADER(X-Twilio-CallSid)}")
same => s,n,Return()

我不确定这是否会有所不同,因为INVITE事务可能只跟踪初始请求,而不是响应,即使我们从另一个通道执行它。您还可以考虑切换到chan_pjsip,它有PJSIP_HEADER

PJSIP_HEADER允许您从入站PJSIP通道读取特定的PJSIP_HEADER,以及在出站通道上写入(添加、更新、删除)报头。一个例外情况是,您可以读取已在出站通道上添加的标头。

也许这是与chan_sipSIP_HEADER函数不同的实现?

另外,书中还有更多的宏文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52527408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档