Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Azure Automation Webhook-Twilio状态回调未到达JSON_Json_Powershell_Twilio_Webhooks_Azure Automation - Fatal编程技术网

Azure Automation Webhook-Twilio状态回调未到达JSON

Azure Automation Webhook-Twilio状态回调未到达JSON,json,powershell,twilio,webhooks,azure-automation,Json,Powershell,Twilio,Webhooks,Azure Automation,我正在尝试实现一个基于Twilio、Azure Automation和SCOM的解决方案,当某个事件发生时自动调用某人。此外,有人可以拨打一个号码,并触发相同的过程 Twilio帐户/电话号码已设置并正常工作。当我调用Twilio号码时,我成功地在Azure Automation Webhook上接收到HTTP POST,Runbook被触发 我现在面临的唯一问题是,我无法使用cmdletconvertfromjson来提取WebhookBody 这是我在使用cmdlet时遇到的错误: Conv

我正在尝试实现一个基于Twilio、Azure Automation和SCOM的解决方案,当某个事件发生时自动调用某人。此外,有人可以拨打一个号码,并触发相同的过程

Twilio帐户/电话号码已设置并正常工作。当我调用Twilio号码时,我成功地在Azure Automation Webhook上接收到HTTP POST,Runbook被触发

我现在面临的唯一问题是,我无法使用cmdlet
convertfromjson
来提取WebhookBody

这是我在使用cmdlet时遇到的错误:

ConvertFrom JSON:调用的JSON基元无效。第13行字符:11 +$Inputs=CONVERTFORM JSON$webhookdata.RequestBody + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified:(:)[ConvertFrom Json],ArgumentException +FullyQualifiedErrorId:System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

这是来自Twilio的Azure Automation Webhook上的输入:

{“WebhookName”:“Twilio” 端点“,”请求主体“:"调用=%2B41815800262&ToState=Chur&CallerCountry=CH&Direction=inbound&Timestamp=Fri%2C%2010%20Feb%202017%2009%3A07%3A35%20%2B0000&CallbackSource=CallProgress events&CallerState=&ToZip=&SequenceNumber=0&CallSid=CA7c152287d945595fe600614fe7778f8a&To=%2B41815880262&CallerZip=&ToCountry=CH&ApiVersion=2010-04-01&CalledCity=&CallerStatus=completed&Duration=1&From=%2BMYTELNUZMBER&CallDuration=8&AccountSid=myid&CalledCountry=CH&CallerCity=&Caller=%2Bmybnumber&FromCountry=CH&ToCity=&FromCity=&CalledState=Chur&FromZip=&FromState=“,”请求头“:{”缓存控制“:”最大年龄=259200”,“连接“:”关闭“,”接受“/,”主机“:”s2events.azure自动化.net”,“用户代理“:”TwilioProxy/1.1“,”X-Twilio-Signature:“pq2jYVGN3H5LmanwId0xCvp69tM=”,“X-ms-request-id:“bc1cf55a-33b2-4046-a343-199d1a7fac4a”}

当我用这个cmd简单地输出WebHook数据时,我可以看到Twilio Repsonse看起来有些奇怪(Heade看起来不错):

输出:

缓存控制:最大年龄=259200连接:关闭接受 :/Host:s2events.azure-automation.net用户代理
:TwilioProxy/1.1 X-Twilio-Signature:xmEbt23prT+W8zJrRZE5pdKullE= x-ms-request-id:bdca412c-584e-42ba-acbb-969cdf9c1ec0

调用=%2B41815880262&ToState=Chur&CallerCountry=CH&Direction=inbound&Timestamp=Wed%2C%2008%20Feb%202017%2013%3A18%3A27%20%2B0000&CallbackSource=CallProgress events&CallerState=&ToZip=&SequenceNumber=0&CallSid=CallSid&To=%2B41815880262&CallerZip=&ToCountry=CH&ApiVersion=2010-04-01&CalledCity=&CalledCity=&CalledStatus=completed&From=%2BMYNUMBER&CallDuration=7&AccountSid=myId&CalledCountry=CH&CallerCity=&Caller=%2BMYBNNumber&FromCountry=CH&ToCity=&FromCity=&CalledState=Chur&FromZip=&FromState=


有人知道我可以做些什么,而不是编写自己的“转换器”从TWILIO HTTP POST获取值吗?或者我可能做错了什么吗?

所以,我想我理解了你的问题。你做错了一点:
$webhook
数据已经是一个对象,它拥有你所需要的一切:

$WebhookData.WebhookName
$WebhookData.RequestHeader
$WebhookData.RequestBody
您只需将
RequestBody
解析为有意义的内容:

$data = @{ };

foreach ($item in $WebhookData.RequestBody.Split('&')) {
    try {
        $item = $item.Split('=');
        $data.Add($item[0], [System.Net.WebUtility]::UrlDecode($item[1]))           
    }
    catch {
        Write-Warning -Message ('Possible null parameter value for {0}' -f $item[0]);
    }
}

所以,我想我理解了你的问题。你做得有点错:
$webhook
数据已经是一个对象,它拥有你需要的一切:

$WebhookData.WebhookName
$WebhookData.RequestHeader
$WebhookData.RequestBody
您只需将
RequestBody
解析为有意义的内容:

$data = @{ };

foreach ($item in $WebhookData.RequestBody.Split('&')) {
    try {
        $item = $item.Split('=');
        $data.Add($item[0], [System.Net.WebUtility]::UrlDecode($item[1]))           
    }
    catch {
        Write-Warning -Message ('Possible null parameter value for {0}' -f $item[0]);
    }
}

这里是Twilio开发者福音传道者

当Twilio向您的URL发送webhook请求时,它没有编码为JSON。这就是您的JSON转换失败的原因

。这与在浏览器中提交表格时提出的请求相同


我不熟悉Azure cmdlet,但如果有一个用于解析URL编码数据的cmdlet,那么您将希望使用它。或者,@4c74356b41提供了一个不错的实现。

这里是Twilio developer evangelist

当Twilio向您的URL发送webhook请求时,它没有编码为JSON。这就是您的JSON转换失败的原因

。这与在浏览器中提交表格时提出的请求相同


我不熟悉Azure cmdlet,但如果有一个用于解析URL编码数据的cmdlet,那么你会想使用它。或者,@4c74356b41提供了一个不错的实现。

非常感谢!我想我可能对Twilios响应/请求有一个错误的预期。非常感谢!我想我可能会对Twilios的响应/请求有一个错误的预期。工作得很好!非常感谢您提供的功能:)在这种情况下,您应该将此标记为一个答案;)@y_Maurer谢谢,我正在尝试,但我想现在我找到了按钮;)我想您已经将另一个答案标记为正确的答案;)@y_Maurer工作得很好!谢谢非常感谢提供的功能:)在这种情况下,您应该将此标记为答案;)@y_maurer谢谢,我正试图,但我想现在我找到了按钮;)我想您已将另一个答案标记为正确答案;)@y_maurer