【问题标题】:How to bridge from a webhook URL to a HTTP POST request?如何从 webhook URL 桥接到 HTTP POST 请求?
【发布时间】:2017-02-28 07:12:12
【问题描述】:

我想向 Twilio 发出 HTTP POST 请求,但调用服务只允许我输入 webhook URL。

我试图将其与 apigee 的 API 代理桥接,但我不知道如何使其工作。

流程是这样的: motion.ai 上的聊天机器人在某个时间点调用网络挂钩 URL。 该调用应通过 twilio.com 进行出站调用,这需要 HTTP POST 请求,请参阅here

POST 请求如下所示:

$ curl -XPOST https://api.twilio.com/2010-04-01/Accounts/<...>/Calls.json \
    --data-urlencode "Url=http://demo.twilio.com/docs/voice.xml" \
    --data-urlencode "To=<...>" \
    --data-urlencode "From=<...>" \
    -u '<...>:<...>'

解决这个问题的最简单方法是什么?

【问题讨论】:

  • 你能详细说明一下实际的流程吗?
  • @am1704 当然,请查看添加的详细信息。
  • 我看你已经想通了。干杯

标签: api curl httprequest twilio apigee


【解决方案1】:

我设法使用 Apigee 设置了一个 API 代理,以将 HTTP GET 请求转换为 HTTP POST 请求。

Apigee 中创建一个API 代理并添加一个Basic Authentication 策略:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
    <DisplayName>Basic Authentication-1</DisplayName>
    <Operation>Encode</Operation>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <User ref="request.queryparam.username"/>
    <Password ref="request.queryparam.password"/>
    <AssignTo createNew="false">request.header.Authorization</AssignTo>
    <Source>request.header.Authorization</Source>
</BasicAuthentication>

接下来添加Assign Message 策略:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
    <DisplayName>ConvertQueryToFormParameters</DisplayName>
    <Properties/>
    <Copy source="request">
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <Verb/>
        <StatusCode/>
        <ReasonPhrase/>
        <Path/>
    </Copy>
    <Add/>
    <Set>
        <FormParams>
            <FormParam name="To">{request.queryparam.To}</FormParam>
            <FormParam name="From">{request.queryparam.From}</FormParam>
            <FormParam name="Url">{request.queryparam.Url}</FormParam>
        </FormParams>
        <Verb>POST</Verb>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

然后您可以通过简单地调用向 Twilio 发出 POST 请求 https://&lt;yourApigeeApiUrl&gt;.apigee.net/&lt;yourApiName&gt;?username=&lt;yourTwilioApiUsername&gt;&amp;password=&lt;yourTwilioApiPassword&gt;&amp;...

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 1970-01-01
    • 2011-04-30
    • 2020-12-25
    • 2013-08-17
    • 1970-01-01
    • 2016-04-19
    • 2019-01-10
    • 2016-11-19
    相关资源
    最近更新 更多