2016-10-18 19 views
0

Я хочу сделать HTTP POST-запрос Twilio, но вызывающая услуга позволяет мне вводить URL-адрес веб-хостинга.Как подключиться с URL-адреса веб-хостинга к HTTP-запросу POST?

Я пытался связать это с прокси-сервером API apigee, но я не мог понять, как заставить его работать.

Поток выглядит следующим образом: Чат-бот на 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 '<...>:<...>' 

Что это самый простой способ преодолеть это?

+0

Можете ли вы подробно рассказать о текущем потоке? – am1704

+0

@ am1704 уверен, см. Дополнительные сведения. – Manuel

+0

Я вижу, вы уже поняли это. ура – am1704

ответ

0

Мне удалось настроить прокси-сервер API с Apigee для преобразования HTTP-запроса GET в HTTP-запрос POST.

Создание API-проксите в Apigee и добавить 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> 

Затем вы можете сделать запрос POST для Twilio простого вызова https://<yourApigeeApiUrl>.apigee.net/<yourApiName>?username=<yourTwilioApiUsername>&password=<yourTwilioApiPassword>&...