我开发了一个网络应用程序,只需点击一下即可让人们通过网络拨打基于Asterisk的VoiP系统(这就像点击一样) 但来自应用程序的所有呼叫都是从同一个SIP帐户发出的。所以我创建了3个字段来输入一些信息(姓名,电话号码,电子邮件)这些信息在拨打电话之前放入Asterisk数据库。 我想要的是可以显示名称和电话号码,而不是启动呼叫的SIP帐户。 如何使用AMI来实现此功能。
此致
答案 0 :(得分:0)
您是否正在使用“动作:来源”从频道到分机?
Action: Originate
Channel: SIP/1001
Context: default
Exten: 1000
Priority: 1
Timeout: 30000
如果是的话
您需要使用一个AGI或Mysql Function来获取数据库中的值,然后设置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(...)
另一种方法是设置“变量”参数并传递给你的exten:
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