【问题标题】:How do I add an SMS from Twilio into Azure Table Storage using Logic App如何使用逻辑应用将来自 Twilio 的 SMS 添加到 Azure 表存储
【发布时间】:2017-12-02 05:11:07
【问题描述】:

我能够通过 Twilio Web Hook 将文本消息接收到逻辑应用程序中。 as set up by following these instructions

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

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

[更新] 现在我正在尝试直接插入实体,但我无法弄清楚如何在设计器中执行此操作。 如何展开实体文本框以放入 JSON?

[更新2]

我发现我可以通过输入来展开实体文本框。但是如何插入 MessageText?

[更新3]

这是我如何插入实体

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

我可以看到运行有问题

我想我需要从 Body 中提取一个 body 但我不知道如何

[更新4]

显示原始输入显示

{
    "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"
    }
}

[更新5]

我想我需要知道如何从 @triggerBody() 中获取 body 属性

[更新6]

我试过了

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

但这会导致错误

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.'.

[更新7]

我正在更改 HTTPRequest 正文以使用 JSON 架构

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

而不是

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

[后注] 我这样做是因为 Azure 显示了一条警告消息 “请记住在您的请求中包含设置为 application/json 的 Content-Type 标头”但是它似乎可以使用任何一种方式。

[更新8]

我使用时在 Azure 中能够收到消息

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

【问题讨论】:

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


【解决方案1】:

根据评论,我更新了答案。

如果我们想在Azure表中插入消息,我们可以直接输入json格式来构造表实体。更多细节请参考演示代码和截图。

注意:Azure 表实体需要 PartionKey 和 Rowkey。

{
 "Message": "@triggerFormDataValue('Body')",
 "PartitionKey": "Twilio",
 "RowKey": "@guid()"
}

【讨论】:

  • 我更新了我的问题以反映我尝试遵循您的答案。
  • 我已经更新了答案,我发现我们不需要使用 Parse Json 动作,我们可以直接在插入实体动作中构造实体。
  • 我更新了我的问题以显示我尝试使用插入实体操作。我无法重现您的屏幕截图。我想直接在插入实体动作中构造json
  • 您的插入实体操作中的“消息文本”来自哪里直接回答?
  • “消息文本”在我的例子中,只是为了测试。在您的情况下,您可以从您提到的屏幕中的正文中获取它。
【解决方案2】:

您也可以仅使用逻辑应用操作来执行此操作。

您可以使用解析 JSON 数据操作来解析来自 Twilio 响应的 JSON。正如您在问题中提到的,您的 Twilio 响应的“正文”成为 Parse JSON 操作的内容。

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

    {
        "message: "A message from twilio"
    }

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

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

【讨论】:

  • 谢谢。我更新了我的问题以显示 Parse JSON 数据操作,但不确定如何填充它。
【解决方案3】:

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

triggerFormDataValue('Body')

FROM 电话号码是

triggerFormDataValue('From')

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

【讨论】:

  • 我在 HTTP 请求中将内容类型从 application/x-www-url-formencoded 更改为 application/json,两者都有效。根据 Update8,我能够在插入实体操作中使用 'Message": "@triggerFormDataValue('Body')"'。
  • 我更改内容类型的原因是 Azure 中显示了一个小弹出警告。 “请记住在您的请求中包含设置为 application/json 的 Content-Type 标头”我在问题的 Update7 部分放了一个屏幕截图。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 2019-05-15
  • 2019-01-14
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
相关资源
最近更新 更多