Web应用程序与AMI Asterisk之间的交互

时间:2013-08-26 21:23:07

标签: sip asterisk

我开发了一个网络应用程序,只需点击一下即可让人们通过网络拨打基于Asterisk的VoiP系统(这就像点击一样) 但来自应用程序的所有呼叫都是从同一个SIP帐户发出的。所以我创建了3个字段来输入一些信息(姓名,电话号码,电子邮件)这些信息在拨打电话之前放入Asterisk数据库。 我想要的是可以显示名称和电话号码,而不是启动呼叫的SIP帐户。 如何使用AMI来实现此功能。

此致

1 个答案:

答案 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