Asterisk 如何通过星号执行拨号计划';什么是AMIAPI?

Asterisk 如何通过星号执行拨号计划';什么是AMIAPI?,asterisk,telephony,asteriskami,agi,Asterisk,Telephony,Asteriskami,Agi,无法找到此问题的具体答案。我是星号和AMI的新手。我需要使用星号自动生成调用,并将参数传递给AGI程序。使用调用文件似乎首先生成不需要的调用。那么,如何使用asterisk AMI API(PHP)通过向其传递所有参数来执行包含AGI的dialplan?因此,AGI将接管并拨打电话 我认为在您的情况下,使用调用文件实际上会更简单。原因如下: AMI要求您编写网络代码,这(如果您是初学者)比构建简单文本文件(调用文件)要复杂得多 调用文件允许您将变量传递给星号,您可以在拨号计划代码中使用星号 调用

无法找到此问题的具体答案。我是星号和AMI的新手。我需要使用星号自动生成调用,并将参数传递给AGI程序。使用调用文件似乎首先生成不需要的调用。那么,如何使用asterisk AMI API(PHP)通过向其传递所有参数来执行包含AGI的dialplan?因此,AGI将接管并拨打电话

我认为在您的情况下,使用调用文件实际上会更简单。原因如下:

  • AMI要求您编写网络代码,这(如果您是初学者)比构建简单文本文件(调用文件)要复杂得多
  • 调用文件允许您将变量传递给星号,您可以在拨号计划代码中使用星号
  • 调用文件非常简单
  • 下面是一个使用调用文件的简单方法的完整示例。我已经尽力在相关评论中解释了这一点

    首先,假设您有一些使用变量的dialplan代码,并调用一个AGI脚本(这是我根据您的问题假设您正在做的事情)。这意味着您的
    extensions.conf
    文件中的代码如下所示:

    [test_stuff]
    exten => s,1,NoOp(starting test!)
    exten => s,n,NoOp(my variable's value is: ${somevar})
    exten => s,n,NoOp(my other variable's value is: ${some_other_var})
    exten => s,n,AGI(/path/to/my/script.sh,${somevar})
    exten => s,n,NoOp(i just ran an AGI script and passed it a command line argument!)
    exten => s,n,Hangup()
    
    下面是一个调用文件,它将:

  • 需要在一些临时目录中创建(可能是
    /tmp/
  • 保存后,您可以将其移动到
    /var/spool/asterisk/outgoing/
    (例如:
    mv/tmp/blah.call/var/spool/asterisk/outgoing/
  • 呼叫文件将立即拨出至电话号码818-222-3333
  • 一旦818-222-3333接听电话,Asterisk将立即开始执行[test_stuff]拨号计划代码,并将在您的通话文件中设置变量供其使用:

    频道:SIP/trunkname/18182223333

    上下文:测试内容

    分机:s

    优先事项:1

    Set:somevar=here

    Set:some\u other\u var=woot


  • 希望有帮助

    例如,您的问题可以通过本地频道解决

    在调用文件中使用
    Local/1812222222@test_stuff
    使用以下拨号计划时作为频道

    [test_stuff]
    exten => _X.,1,NoOp(starting test!)
    exten => _X.,n,Set(phone=${EXTEN})
    exten => _X.,n,AGI(/path/to/my/billing,${phone},${other_variables_account_etc..})
    exten => _X.,n,Dial(SIP/trunkName/${phone})
    

    您可以将此方法用于AMI或.call文件这两个接口

    。您知道,生成的呼叫来自订户的帐户。因此,AGI首先会检查他/她是否有足够的信用卡打电话。然后开始拨号。这就是为什么呼叫文件在这里没有用处,因为它首先开始拨号。