Мы пытаемся включить шаги IVR в наш интерфейс, но чтобы получить шаги, мне нужно сделать несколько вызовов API. Это нормально, за исключением того, что единственный способ получить соответствующую информацию - это загрузить все исполнения потока.
Если бы я мог передать flow.sid
через виджет HTTP Request
, то я мог бы получить информацию, которую япозже, вместо того, чтобы перебирать все предыдущие исполнения. Я попытался передать {{flow.data}}
в качестве тела запроса, думая, что это JSON, но в итоге он становится пустым.
Вот всплеск, который кто-то написал для нас, модифицированный для работы только с одним execution
.
require "httparty"
STUDIO_FLOW_SID = "FW***"
AUTH = {username: ENV["TWILIO_ACCOUNT_SID"], password: ENV["TWILIO_AUTH_TOKEN"]}
DATE_CREATED_FROM = "2019-09-01T000000Z"
DATE_CREATED_TO = "2019-10-01T000000Z"
# Retrieves all executions in the given date range
executions_url = "https://studio.twilio.com/v1/Flows/#{STUDIO_FLOW_SID}/Executions?DateCreatedFrom=#{DATE_CREATED_FROM}&DateCreatedTo=#{DATE_CREATED_TO}"
response = HTTParty.get(executions_url, basic_auth: AUTH)
# If I can get the individual execution from the IVR {{flow.data}}
# that would be ideal
execution = response.parsed_response["executions"].first
execution_context_url = execution["links"]["execution_context"]
execution_context = HTTParty.get(execution_context_url, basic_auth: AUTH)
# Or, if I could work backwards and get the execution context ID from
# the call somehow, that would work too.
call_sid = execution_context.parsed_response["context"]["trigger"]["call"]["CallSid"]
steps = HTTParty
.get(execution["links"]["steps"], basic_auth: AUTH)
.parsed_response["steps"]
.sort_by { |step| step["date_created"] }
.map { |step| step["transitioned_to"] }
.select { |step| step.include?("option") || step.include?("menu") }
puts [call_sid, steps].inspect
tl; dr - мне либо нужна информация об исполнении потока, переданная в виджете HTTP Request
или мне нужно работать в обратном направлении от CallSid
, чтобы получить шаги выполнения.