我开发了一个 Web 应用程序,它允许人们通过单击从 Web 向基于 Asterisk 的 VoiP 系统进行呼叫(就像单击呼叫一样)但是来自该应用程序的所有呼叫都是从同一个 SIP 帐户发出的. 所以我创建了 3 个字段来输入一些信息(姓名、电话号码、电子邮件),这些信息在拨打电话之前被放入 Asterisk 数据库。我想要的是可以显示姓名和电话号码,而不是发起呼叫的 SIP 帐户。如何使用 AMI 来启用此功能。
问候
您是否正在使用从频道到扩展的“操作:起源”?
Action: Originate
Channel: SIP/1001
Context: default
Exten: 1000
Priority: 1
Timeout: 30000
如果是
您将需要使用一个 AGI 或Mysql 函数从数据库中获取值,然后设置CALLERID(name,num)
在你的 extensions.conf 中设置
[default]
exten => 1000,1,AGI(AGI_TO_GET_VALUES_FROM_DATABASE)
exten => 1000,n,Set(${CALLERID(NUM)}=${VARIABLE_NUM_FORM_AGI})
exten => 1000,n,Set(${CALLERID(NAME)}=${VARIABLE_NAME_FROM_AGI})
exten => 1000,n,Dial(...)
另一种方法是设置“变量”参数并传递给您的扩展:
Action: Originate
Channel: SIP/1001
Context: default
Exten: 1000
Priority: 1
Timeout: 30000
Variable: var1=23|var2=24
将数据库中的值放入 var1,var2 中!
现在您可以在 extensions.conf 中获取 var1,var2 并设置 callerid(name,num)
您仍然可以设置“Callerid”参数来设置您的电话号码,例如:
Action: Originate
Channel: SIP/1001
Context: default
Exten: 1000
Priority: 1
Timeout: 30000
Callerid: 111111
Variable: var1=23|var2=24