【发布时间】:2017-06-28 15:09:33
【问题描述】:
我正在尝试实施一种解决方案,该解决方案基于 Twilio、Azure 自动化和 SCOM,在发生特定事件时自动呼叫某人。此外,应该可以有人拨打一个号码,并触发相同的过程。
Twilio 帐户/电话号码已设置并且工作正常。当我调用 Twilio Number 时,我在 Azure 自动化 Webhook 上成功接收到 HTTP POST,并触发了 Runbook。
我现在面临的唯一问题是我无法使用 cmdlet ConvertFrom-Json 来提取 WebhookBody。
这是我在使用 cmdlet 时遇到的错误:
ConvertFrom-JSON:无效的 JSON 原语:已调用。在行:13 字符:11 + $Inputs = ConvertFrom-JSON $webhookdata.RequestBody + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
这是从 Twilio 到达 Azure 自动化 Webhook 的输入:
{"WebhookName":"Twilio Endpoint","RequestBody":"Called=%2B41815880262&ToState=Chur&CallerCountry=CH&Direction=inbound&Timestamp=Fri%2C%2010%20Feb%202017%2009%3A07%3A35%20%2B0000&CallbackSource=call-progress-events&CallerState=&ToZip=&SequenceNumber=0 = CA7c152287d945595fe600614fe7778f8a&要=%2B41815880262&CallerZip =&ToCountry = CH&ApiVersion = 2010-04-01&CalledZip =&CalledCity =&CallStatus =完成&持续时间= 1&从=%2BMYTELNUZMBER&CallDuration = 8&AccountSid =糠&CalledCountry = CH&CallerCity =&主叫=%2Bmybnumber&FromCountry = CH&ToCity =&FromCity =&CalledState =库尔&FromZip =&FromState =”, "RequestHeader":{"Cache-Control":"max-age=259200","Connection":"close","Accept":"/","Host":"s2events.azure -automation.net","User-Agent":"TwilioProxy/1.1","X-Twilio-Signature":"pq2jYVGN3H5LmanwId0xCvp69tM=","x-ms-request-id":"bc1cf55a-33b2-4046-a343- 199d1a7fac4a"}}
当我用这个 cmd 简单地输出 WebHook 数据时,我可以看到 Twilio Repsonse 看起来有些奇怪(虽然 Head 看起来不错):
$WebhookName = $WebhookData.WebhookName
$WebhookHeaders = $WebhookData.RequestHeader
$WebhookBody = $WebhookData.RequestBody
Write-Output $WebhookHeaders
Write-Output $WebhookBody
输出:
缓存控制:max-age=259200 连接:关闭接受 :/ 主机:s2events.azure-automation.net 用户代理
:TwilioProxy/1.1 X-Twilio-签名:xmEbt23prT+W8zJrRZE5pdKullE= x-ms-request-id : bdca412c-584e-42ba-acbb-969cdf9c1ec0Called=%2B41815880262&ToState=Chur&CallerCountry=CH&Direction=inbound&Timestamp=Wed%2C%2008%20Feb%202017%2013%3A18%3A27%20%2B0000&CallbackSource=call-progress-events&CallerState=&ToZip=&SequenceNumber=0&&CallSid=CALLS8To=0&&CallSid=CALLS8ToID =&ToCountry=CH&ApiVersion=2010-04-01&CalledZip=&CalledCity=&CallStatus=completed&Duration=1&From=%2BMYNUMBER&CallDuration=7&AccountSid=MYSID&CalledCountry=CH&CallerCity=&Caller=%2BMYBNUMBER&FromCountry=CH&ToCity=&FromCity=&CalledState=Chur&FromZip=&FromState=>
有没有人知道我可以做什么而不是编写自己的“转换器”来从 TWILIO HTTP POST 获取值?或者我可能做错了什么?
【问题讨论】:
标签: json powershell twilio webhooks azure-automation