Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 星号:如何将数组数据以URL形式传递给AGI脚本?_Arrays_Url_Asterisk_Agi - Fatal编程技术网

Arrays 星号:如何将数组数据以URL形式传递给AGI脚本?

Arrays 星号:如何将数组数据以URL形式传递给AGI脚本?,arrays,url,asterisk,agi,Arrays,Url,Asterisk,Agi,其他飞越者: 我带着一个问题来到这里,到目前为止,我还没能独自解决这个问题 我希望能够将数据从阵列传递到Asterisk PBX拨号计划中的AGI脚本,该拨号计划的格式如下: exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param1=value1&param2=value2...&paramN=valueN) exten => some_exten,priority,AGI(ag

其他飞越者:

我带着一个问题来到这里,到目前为止,我还没能独自解决这个问题

我希望能够将数据从阵列传递到Asterisk PBX拨号计划中的AGI脚本,该拨号计划的格式如下:

exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param1=value1&param2=value2...&paramN=valueN)
exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1&param_array=array_value2...&param_array=array_valueN)
但其中一个参数必须接收数组数据,就像它是CGI脚本中的URL参数一样,如:

exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=value1,value2,value3...,valueN)
我知道AGI脚本能够接收数组作为参数,但是URL形式的AGI脚本的可用文档没有说明如何接收数组数据作为脚本参数;这就是为什么我把这个问题贴在这里

我尝试过(结果不成功)通过以下方式传递数据:

  • 逗号分隔:

    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1,array_value2...,array_valueN)
    
    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1;array_value2...;array_valueN)
    
  • 管道分离:

    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1|array_value2...|array_valueN)
    
  • 分号分隔:

    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1,array_value2...,array_valueN)
    
    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1;array_value2...;array_valueN)
    
  • 但到目前为止,我只通过以下方式成功地传递了数组数据:

    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param1=value1&param2=value2...&paramN=valueN)
    
    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array=array_value1&param_array=array_value2...&param_array=array_valueN)
    
    据我所知,这不是将参数传递到URL的正确方法,而URL正是我用来将数据传递到AGI脚本的方法


    如果有人能告诉我这件事,我将不胜感激,因为我真的不想像我到目前为止所做的那样逐个传递每个数组项。

    我会使用引号并用逗号分隔后面的
    参数数组

    exten => some_exten,priority,AGI(agi:hostname:port/agi_script.agi?param_array="a=1,b=2,c=3,d=4") 
    

    星号:

    exten => s,n,Read(ZIPCODE,,8,3) ;ZIPCODE is my variable
    exten => s,n,AGI(query-database.php|${ZIPCODE})
    
    $zipcode = $argv[1]; Get the value of first var.
    
    在PHP脚本查询数据库中。PHP:

    exten => s,n,Read(ZIPCODE,,8,3) ;ZIPCODE is my variable
    exten => s,n,AGI(query-database.php|${ZIPCODE})
    
    $zipcode = $argv[1]; Get the value of first var.
    

    答案不完全正确,也很晚,但我使用
    python
    agi
    脚本发送和接收变量的方式如下:

    背景:

    [agi_demo]
    exten => s,1,NoOp()
    exten => s,n,AGI(agi://127.0.0.1:4573/demo2,1,2,3,4,5) ; send args 1 2 3 4 5 to demo2 
    exten => s,n,Verbose(OK = ${ok}) ; receive variable 'ok' from agi
    exten => s,n,Hangup()
    

    调试日志:

    -- Executing [s@agi_demo:2] AGI("SIP/trunk-00000016", "agi://127.0.0.1:4573/demo2,1,2,3,4,5") in new stack
    -- <SIP/trunk-00000016> Playing 'agi_demo/i_just_called.slin' (escape_digits=12) 
    -- <SIP/trunk-00000016>AGI Script agi://127.0.0.1:4573/demo2 completed, returning 0
    -- Executing [s@agi_demo:3] Verbose("SIP/trunk-00000016", "OK = AGI Rocks") in new stack
    OK = AGI Ricks
        -- Executing [s@agi_demo:4] Hangup("SIP/trunk-00000016", "") in new stack
    
  • 来自egg的服务器源代码

  • 要使用
    pystrix
    AGI
    发送变量,请使用
    SetVariable
    方法:

    agi.execute(pystrix.agi.core.SetVariable("ok", "AGI Rocks"))
    

  • afaik星号仅支持在拨号计划中作为简单变量写入。因此,我想知道拨号计划中有哪个数组,它来自哪里?您可以向agi发送任何值。如果您的任何表单不起作用,您总是可以在脚本中使用BASE64编码和解码。我在dialplan中的数组是一个单独变量的集合。但是,对于我的AGI请求,它们的值需要全部以以下形式存在于单个数组中:
    param_数组=variable1_值,variable2_值…,variableN_值
    这不是我要寻找的,而是param_数组是一个数组。所以我会寻找类似的东西:
    param_array=1,2,3,4