Delphi使用Asterisk AMI接口给分机播放系统录音

查找资料

在上一篇“Delphi调用Asterisk系统AMI接口取得来电号码”成功连接上Asterisk AMI接口取得来电号码,我们来测试用AMI来做点其它,比如说当系统出现故障后,给分机发送一个报警提醒,要怎么实现呢?

经过查找资料我们发现在/var/lib/asterisk/agi-bin/phpagi-asmanager.php有ami接口的代码使用样例,虽然这里是php,但参数还是类似的,有一定的参考作用,但这个是封装过的,这时我们可以在asterisk的wiki上查查资料

https://wiki.asterisk.org/wiki/dosearchsite.action?where=AST&spaceSearch=true&queryString=Originate

Delphi使用Asterisk AMI接口给分机播放系统录音_AMI

Delphi使用Asterisk AMI接口给分机播放系统录音_AMI_02

测试给分机播放产品1介绍

procedure TF_Server_AsteriskAMI_Main.Btn_PlaybackClick(Sender: TObject);
var
  s: string;
begin
//给分机播放产品1介绍
  s := 'Action:Originate' + #13#10
    + 'Channel:pjsip/1001' + #13#10
    + 'Exten:1003' + #13#10
    + 'Context:from-internal' + #13#10
    + 'Priority:1' + #13#10
    + 'Timeout:30000' + #13#10
    + 'CallerID:9119' + #13#10
    + 'Variable:NULL' + #13#10
    + 'Account:NULL' + #13#10
    + 'Application:Playback' + #13#10
    + 'Data:custom/cp1' + #13#10
    + #13#10;
  Cs_AMI.Socket.SendText(s);

end;

调用成功

Delphi使用Asterisk AMI接口给分机播放系统录音_呼叫中心_03

测试分机通话


procedure TF_Server_AsteriskAMI_Main.BtnDialClick(Sender: TObject);
var
  s: string;
begin
//分机通话
  s := 'Action:Originate' + #13#10
    + 'Channel:pjsip/1001' + #13#10
    + 'Exten:1009' + #13#10
    + 'Context:from-internal' + #13#10
    + 'Priority:1' + #13#10
    + 'Timeout:30000' + #13#10
    + 'CallerID:1001' + #13#10
    + 'Variable:NULL' + #13#10
    + 'Account:NULL' + #13#10
    + 'Application:Dial' + #13#10
    + 'Data:pjsip/1009' + #13#10
    + #13#10;
  Cs_AMI.Socket.SendText(s);
end;

Delphi使用Asterisk AMI接口给分机播放系统录音_Asterisk_04