PJSIP正在向队列添加自定义标头



我试图将自定义信息添加到INVITE数据包中,该数据包将通过WebRTC前端接收。在Asterisk上,此数据在拨号前生成,并放置在EXTEN var.中

传输这些数据最简单的方法是在拨号前将自定义标头添加到频道中。

在常规拨号中,我需要

same => n,Set(PJSIP_HEADER(add,X-Custom-Header)=${EXTEN})

PJSIP_HEADER需要工作通道,但在队列中我没有。

现在像一样扩展

[testing-in]
exten => _XXX.,1,Noop(queue test call)
same => n,Answer
same => n,Ringing
same => n,Wait(2)
;Need to add custom header here
same => n,Queue(testing-operators)
same => n,Hangup

队列中的所有操作员在振铃时都需要接收此自定义标头

执行Queue命令时,可以使用Queue选项来提供要在已启动的传出调用中执行的指令。以下代码段将添加标头x=y。

exten => _XXX,1,NoOp(Add header to outgoing call in the queue)
same => n,Queue(queuename, b(ADD_HEADER^s^1))
[ADD_HEADER]
exten => s,1,Set(PJSIP_HEADER(x)=y))

这并不容易。您可以使用两个下划线将变量放入队列:

;Need to add custom header here
same => n,Set(__ADD_NEW_HEADER=1)
same => n,Queue(testing-operators)

之后,您可以通过本地/通道添加代理(请参阅FreePBX中的情况(,并为每个呼叫添加标头(在FreePBX中,它将来自队列上下文(

现在我将一些有用的信息注入呼叫者名称

[test-in]
exten => _XXX.,1,GoSub(recording,s,1,(${CALLERID(num)},${EXTEN}))
same => n,Noop(test-in call)
same => n,Answer
same => n,Set(CALLERID(name)=${EXTEN})
same => n,Queue(test-operators,Tt,,120)
same => n,Hangup

并在前端应用程序上解析它对我有效

最新更新