asterisk使用mysql,Asterisk拨号方案操作mysql实例 在CDR表中标记上一个呼出号码

环境Elastix2.5

编辑/etc/asterisk/extensions.conf

[from-internal]

exten=>#,1,Answer //这里设置的是#号键

exten=>#,n,MySql(connect connid localhost root 123456 asteriskcdrdb) //连接mysql 操作

;exten=>#,n,MySql(query resultidr ${connid} insert into test (msg) values ('${CALLERID(num)}')) //测试插入

exten=>#,n,MySql(query resultidr ${connid} select dst as a,uniqueid as b from cdr where src=${CALLERID(num)} order by uniqueid desc limit 1) //获取上一个呼叫记录数据

exten=>#,n,MySql(Fetch foundrow ${resultidr} a b) //取出变量

exten=>#,n,MySql(clear ${resultidr}) //清空结果集

exten=>#,n,MySql(query resultidr ${connid} update cdr set userfield='OK' where uniqueid=${b}) //更新

exten=>#,n,MySql(clear ${resultidr})

exten=>#,n,MySql(disconnect ${connid}) //断开连接

exten=>#,n,saydigits(${a}) //报被叫号码

exten=>#,n,Playback(custom/mark_ok) //“已经标记成功”语音

exten=>#,n,Hangup //挂机

//后面是原来的拨号方案

include => from-internal-noxfer

include => from-internal-xfer

include => bad-number ; auto-generated

保存完毕后需要重载asterisk生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Asterisk的满意度调查功能的示例代码。该代码使用Dialplan和AGI脚本来实现满意度调查,并将结果保存到CSV文件中。您需要将以下代码添加到您的Asterisk配置文件中,并根据需要进行修改。 1. Dialplan 在您的Asterisk配置文件(如extensions.conf)中,添加以下Dialplan代码: ``` [mysurvey] exten => s,1,Answer() same => n,Playback(welcome) same => n,AGI(survey.agi) same => n,Playback(thankyou) same => n,Hangup() ``` 该Dialplan定义了一个名为“mysurvey”的上下文,当有电话呼入时,会播放欢迎语音,启动AGI脚本进行满意度调查,并在调查结束后播放感谢语音并挂断电话。 2. AGI脚本 在您的Asterisk配置文件(如extensions.conf)所在的目录中,创建名为“survey.agi”的AGI脚本文件,并添加以下代码: ``` #!/usr/bin/perl use Asterisk::AGI; use Text::CSV; my $AGI = new Asterisk::AGI; my $callerid = $AGI->get_variable('CALLERID(num)'); my $filename = "/var/spool/asterisk/surveys/${callerid}.csv"; my $csv = Text::CSV->new({binary => 1, eol => $/}) or die "Cannot use CSV: " . Text::CSV->error_diag(); my $questions = [ {id => 'q1', text => 'How satisfied are you with our service?'}, {id => 'q2', text => 'How likely are you to recommend us to others?'}, {id => 'q3', text => 'Do you have any suggestions for improvement?'}, ]; my $answers = {}; foreach my $question (@$questions) { my $answer = $AGI->exec('Playback', $question->{text}); $answers->{$question->{id}} = $answer; } open(my $fh, '>>', $filename) or die "Cannot open $filename: $!"; $csv->print($fh, [$callerid, $answers->{q1}, $answers->{q2}, $answers->{q3}]) or die "Cannot write to $filename: $!"; close($fh); ``` 该AGI脚本定义了一个名为“survey.agi”的AGI脚本,用于执行满意度调查并将结果保存到CSV文件中。该脚本首先获取来电号码,并根据号码生成CSV文件名。 然后,脚本定义了一个问题数组,用于存储要问的问题和问题ID。在调查过程中,脚本会遍历问题数组,并使用AGI命令“Playback”播放每个问题的语音,并等待来电者的回答。回答将存储在一个答案哈希表中。 最后,脚本将来电号码和答案存储到CSV文件中。如果文件不存在,则会创建一个新文件。如果文件已存在,则会在文件末尾添加新行。 3. 配置文件 在您的Asterisk配置文件中,添加以下内容以启用满意度调查功能: ``` [general] autofallthrough=yes [surveys] exten => _X.,1,Goto(mysurvey,s,1) ``` 该配置定义了一个名为“surveys”的上下文,用于匹配所有满意度调查呼叫。当有电话呼入时,该配置会将呼叫路由到之前定义的Dialplan“mysurvey”中。 需要注意的是,您需要根据您的Asterisk系统和需要进行适当的修改。例如,您可能需要更改CSV文件的路径和命名方式,或者修改问题数组中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值