如何使用Logic App将Twilio中的SMS添加到Azure表存储中

时间:2017-11-29 04:29:03

标签: twilio azure-table-storage azure-logic-apps

我可以通过Twilio Web Hook在Logic App中收到短信。 as set up by following these instructions

关于my question here 现在我需要将该文本添加到Azure表中。 我添加了一个Parse JSON动作 我应该在内容和架构中加入什么? enter image description here

我发现如果我在内容框中单击,系统会提示我从标签中选择。我猜Body就是那个。

[更新] 现在我试图直接插入实体,但我不知道如何在设计器中执行此操作。 如何展开“实体”文本框以将JSON放入? enter image description here

[UPDATE2]

我发现我可以通过输入来扩展Entity文本框。但是如何插入MessageText? enter image description here

[UPDATE3]

以下是我执行插入实体的方法

enter image description here

我能够获得Azure存储表的记录。但是我的短信的正文在哪里?

enter image description here

我可以看到运行时出现问题 enter image description here

我想我需要从身体中提取身体,但我不知道如何

enter image description here

[UPDATE4]

显示原始输入显示

{
    "host": {
        "connection": {
            "name": "/subscriptions/somenumbers/resourceGroups/mydomain.com.au/providers/Microsoft.Web/connections/azuretables"
        }
    },
    "method": "post",
    "path": "/Tables/TextMessages/entities",
    "body": {
        "Message": {
            "$content-type": "application/x-www-form-urlencoded",
            "$content": "VG9Db3VudHJ5PUFVJlRvU3RhdGU9JlNtc01lc3NhZ2VTaWQ9U000MTU4YzU1YmVkNDNjZDFiNWZmMTNiODZiNjIyNzkyNSZOdW1NZWRpYT0wJlRvQ2l0eT0mRnJvbVppcD0mU21zU2lkPVNNNDE1OGM1NWJlZDQzY2QxYjVmZjEzYjg2YjYyMjc5MjUmRnJvbVN0YXRlPSZTbXNTdGF0dXM9cmVjZWl2ZWQmRnJvbUNpdHk9JkJvZHk9VGFrZSsyJkZyb21Db3VudHJ5PUFVJlRvPSUyQjYxNDQ3NDA1NjEzJlRvWmlwPSZOdW1TZWdtZW50cz0xJk1lc3NhZ2VTaWQ9U000MTU4YzU1YmVkNDNjZDFiNWZmMTNiODZiNjIyNzkyNSZBY2NvdW50U2lkPUFDN2FhZTMxM2UwZmRlOGVkZjE5YzhjMGY5NjQ1MTgwNjYmRnJvbT0lMkI2MTQxOTU3NTQxNSZBcGlWZXJzaW9uPTIwMTAtMDQtMDE=",
            "$formdata": [
                {
                    "key": "ToCountry",
                    "value": "AU"
                },
                {
                    "key": "ToState",
                    "value": ""
                },
                {
                    "key": "SmsMessageSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "NumMedia",
                    "value": "0"
                },
                {
                    "key": "ToCity",
                    "value": ""
                },
                {
                    "key": "FromZip",
                    "value": ""
                },
                {
                    "key": "SmsSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "FromState",
                    "value": ""
                },
                {
                    "key": "SmsStatus",
                    "value": "received"
                },
                {
                    "key": "FromCity",
                    "value": ""
                },
                {
                    "key": "Body",
                    "value": "Take 2"
                },
                {
                    "key": "FromCountry",
                    "value": "AU"
                },
                {
                    "key": "To",
                    "value": "+61447405613"
                },
                {
                    "key": "ToZip",
                    "value": ""
                },
                {
                    "key": "NumSegments",
                    "value": "1"
                },
                {
                    "key": "MessageSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "AccountSid",
                    "value": "AC7aae313e0fde8edf19c8c0f964518066"
                },
                {
                    "key": "From",
                    "value": "+61419575415"
                },
                {
                    "key": "ApiVersion",
                    "value": "2010-04-01"
                }
            ]
        },
        "PartitionKey": "Twilio",
        "RowKey": "1d5a06ca-9dbd-4ba9-b514-77904710ffc3"
    }
}

[Update5]

我想我需要知道如何从@triggerBody()

中获取body属性

enter image description here

[Update6]

我试过

    "body": {
        "Message": "@triggerBody()['Body']",
        "PartitionKey": "Twilio",
        "RowKey": "@guid()"
    } 

但这会导致错误

enter image description here

InvalidTemplate. Unable to process template language expressions in action 'Insert_Entity' inputs at line '1' and column '1450': 'The template language expression 'triggerBody()['Body']' cannot be evaluated because property 'Body' doesn't exist. Property selection is not supported on content of type 'application/x-www-form-urlencoded'. Please see https://aka.ms/logicexpressions for usage details.'.

[Update7]

我正在更改HTTPRequest主体以使用JSON Schema

"$content-type": "application/json",

而不是

 "$content-type": "application/x-www-form-urlencoded",

[后来的说明] 我这样做是因为Azure显示了一条警告消息 “请记住在请求中包含一个Content-Type标头集到application / json”但它似乎无论如何都有效。

enter image description here

[Update8]

当我使用

时,我能够在Azure中收到消息

“消息”:“@ turiggerFormDataValue('Body')”

2 个答案:

答案 0 :(得分:0)

您也可以仅使用Logic App操作执行此操作。

您可以使用Parse JSON数据操作来解析来自Twilio响应的JSON。 "身体"如你在问题中提到的,你的Twilio响应成为Parse JSON动作的内容。

要为Schema字段生成架构,您可以单击"使用示例有效负载生成架构"链接。粘贴在Twilio响应中预期的JSON有效负载,例如:

    {
        "message: "A message from twilio"
    }

然后,您可以使用Parse JSON操作的结果填充Azure表存储。

可以从Parse JSON操作填充消息;分区密钥可以硬编码; RowKey可以基于表达式 - @guid()来计算。

答案 1 :(得分:0)

这里要注意的一件事是Twilio webhook的内容类型不是application / json,所以你不能使用解析JSON。它是application / x-www-url-formencoded。您仍然可以解析它,但需要使用表达式。如果打开表达式编辑器,获取文本正文将是:

triggerFormDataValue('身体&#39)

FROM电话号码

triggerFormDataValue('从&#39)

您可以在触发器的输出中看到不同的表单。