从Twilio处理json结果
我目前以json列的形式从Twilio中检索语音和短信警报。使用这个tsql代码从Twilio处理json结果,twilio,Twilio,我目前以json列的形式从Twilio中检索语音和短信警报。使用这个tsql代码 SELECT [ReceivedDateTime] ,MsgSid = JSON_VALUE(payload, '$.resource_sid') ,WebhookURL = JSON_VALUE(payload, '$.webhook.request.url') ,ToState = JSON_VALUE(payload, '$.webhook.request.parameters.ToState')
SELECT [ReceivedDateTime]
,MsgSid = JSON_VALUE(payload, '$.resource_sid')
,WebhookURL = JSON_VALUE(payload, '$.webhook.request.url')
,ToState = JSON_VALUE(payload, '$.webhook.request.parameters.ToState')
,AlertTime = JSON_VALUE(payload, '$.webhook.request.parameters.Timestamp')
,Direction = JSON_VALUE(payload, '$.webhook.request.parameters.Direction')
,SequenceNumber = JSON_VALUE(payload, '$.webhook.request.parameters.SequenceNumber')
,ToNumber = JSON_VALUE(payload, '$.webhook.request.parameters.To')
,ToCity = JSON_VALUE(payload, '$.webhook.request.parameters.ToCity')
,CallStatus = JSON_VALUE(payload, '$.webhook.request.parameters.CallStatus')
,FromNumber = JSON_VALUE(payload, '$.webhook.request.parameters.From')
,AccountSid = JSON_VALUE(payload, '$.webhook.request.parameters.AccountSid')
,TwilioReason = JSON_VALUE(payload, '$.response.headers.X-Twilio-Reason')
,AlertDate = JSON_VALUE(payload, '$.webhook.response.headers.Date')
FROM [dbo].[TwilioAlerts]
我可以查询此文件,直到找到名称中包含破折号的部分。试图引入X-Twilio-Reason,我得到了一个错误:JSON路径的格式不正确。在位置20处发现意外字符“-”。我如何在tsql中引用它
这是我试图查询的json:
{
"resource_sid": "",
"service_sid": null,
"error_code": "15003",
"more_info": {
"Msg": "HTTP retrieval failure",
"statusCallback": "",
"ErrorCode": "15003",
"LogLevel": "WARN"
},
"webhook": {
"type": "application/json",
"request": {
"url": "",
"method": "POST",
"headers": {},
"parameters": {
"Called": "+",
"ToState": "TX",
"CallerCountry": "US",
"Timestamp": "Fri, 22 Nov 2019 14:33:23 +0000",
"Direction": "outbound-api",
"CallbackSource": "call-progress-events",
"CallerState": "TX",
"ToZip": "78742",
"SequenceNumber": "1",
"CallSid": "",
"To": "+",
"CallerZip": "",
"ToCountry": "US",
"CalledZip": "",
"ApiVersion": "2010-04-01",
"CalledCity": "",
"CallStatus": "ringing",
"From": "+",
"AccountSid": "",
"CalledCountry": "US",
"CallerCity": "",
"ToCity": "AUSTIN",
"Caller": "+",
"FromCountry": "US",
"FromCity": "",
"CalledState": "TX",
"FromZip": "",
"FromState": "TX"
}
},
"response": {
"status_code": null,
"headers": {
"X-Twilio-WebhookAttempt": "1",
"X-Twilio-Reason": "Response does not contain content type",
"Content-Length": "464",
"Date": "Fri, 22 Nov 2019 14:33:23 GMT",
"Content-Type": "text/html"
},
"body":"Twilio was unable to fetch content from: https://appointmentwave.com/ProdAWHandler/events/voice\nError: Error reading response: Response does not contain content type\nAccount SID: ACc9eea08b61d774d5dfc07c91aa690466\nSID: CA6e2b878c4e1e5d2ec3733d52b2c2b2fa\nRequest ID: 6ae4e44b-f6cb-4ca3-a057-6067024f943a\nRemote Host: appointmentwave.com\nRequest Method: POST\nRequest URI: https://appointmentwave.com/ProdAWHandler/events/voice\nSSL
Version: TLSv1.2\nURL Fragment: true"}}}
有关如何提取“X-Twilio-Reason”的任何答案?请尝试在名称中带破折号的部分周围添加双引号
,TwilioReason = JSON_VALUE(payload, '$.response.headers."X-Twilio-Reason"')
这不会抛出一个错误,但它只是拉入NULL