呼叫建立后拨打分机

时间:2019-04-22 21:12:53

标签: lua freeswitch

我需要在IVR中拨打分机号。因此,我的freeswitch应用程序将测试PBX扩展。应用程序将拨打IVR(可以运行任何PBX供应商),当PBX接听时,它将拨打分机并运行多个测试,包括测试双向音频,DTMF和其他测试。我的测试方案使用的是正常数字,但是现在我需要扩展它以在IVR中拨打分机号。其中大部分是用Lua编写的

此设置有两个问题:

  1. 在建立呼叫后,如何拨打电话分机。尝试了“ send_dtmf”,但是它没有用,或者也许我只是不知道如何使用它。我已经完成了“ send_dtmf”,没有任何反应。 IVR接听电话后拨打分机的最佳方法是什么?

  2. 一旦我使这部分工作。我如何等待扩展到 开始执行我的测试脚本之前先回答。我当时想做“ wait_for_silence 200 15 10 5000”,然后执行其余脚本。你怎么看?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

要呼叫键入的分机,应使用名为TIdMessageuses ..., IdMessageBuilder; procedure TfrmSendMail.btnSendClick(Sender: TObject); var Strm: TStream; Bldr: TIdMessageBuilderPlain; begin memStatus.Clear; IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1_2; IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmClient; IdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode := []; IdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyDepth := 0; IdSMTP.Host := teHost.Text; IdSMTP.Port := 587; try IdMessage.Clear; IdMessage.From.Address := teFrom.Text; IdMessage.Recipients.EMailAddresses := teTo.Text; IdMessage.Subject := teSubject.Text; Strm := nil; try Bldr := TIdMessageBuilderPlain.Create; try Bldr.PlainText.Text := memBody.Text; Bldr.PlainText.Add('Timestamp: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Now())); //if FileExists(beAttachment.Text) then if not sqlPDFPDF_Incasso.IsNull then begin //Bldr.Attachments.Add(beAttachment.Text); Strm := sqlPDFPDF_Incasso.DataSet.CreateBlobStream(sqlPDFPDF_Incasso, bmRead); Bldr.Attachments.Add(Strm, 'application/pdf').WantedFileName := 'Invoice.pdf'; end; Bldr.FillMessage(IdMessage); finally Bldr.Free; end; finally Strm.Free; end; Screen.Cursor := crHourGlass; try IdSMTP.Connect; try IdSMTP.Send(IdMessage); finally IdSMTP.Disconnect; end; memStatus.Lines.Insert(0, 'Email sent - OK.'); finally Screen.Cursor := crDefault; end; except on E: Exception do memStatus.Lines.Insert(0, 'ERROR: ' + E.Message); end; end; 的应用程序。 接下来,读取所按下的数字,并在此分支上对该数字进行应用(转接/呼叫)。 这不是简单的play and get digits

要实现bind digit action,可以使用名为call extension application的应用程序。