Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
breakoutModewide
// передача JSON 
вызвать.внешнийСервис("{url}", "POST").сЗаголовками(("Content-Type", "application/json")).сТеломСообщения("{\"name\":\"new document\", \"question\":\"new question\"}").сохранитьРезультат(("result", "answer_code")) +
// передача x-www-form-urlencoded
вызвать.внешнийСервис("{url}", "POST").сЗаголовками(("Content-Type", "application/x-www-form-urlencoded")).сТеломСообщения("name=new document, question=new question").сохранитьРезультат(("result", "answer_code")) +

Асинхронные API вызовы

AutoFAQ может получать и обрабатывать POST вызовы от других сервисов. Адрес выставляемого вебхука включает в себя идентификатор сервиса и идентификатор диалога в рамках которого работает сценарий.

Модификатор шага .получитьАдресВебхука для получения адреса вебхука в диалоге.

Модификатор шага .выставитьВебхук(limit) для выставления вебхука и ожидания поступления вызова от другого сервиса, где limit это время ожидание ответа в секундах. Используется вместе с модификатором .сохранитьРезультатКакСтроку()

Code Block
breakoutModewide
// установили адрес внешней системы
установитьПеременную("comand_url", "https://host.ru") +
//
// получили адрес вебхука
вызвать.получитьАдресВебхука("webhook_url") +
//
// собираем тело основного запроса с адресом вебхука
выполнитьJs("""
var request_body = {'request':'run', 'param_request':param_request};
var exit = {'request_body':JSON.stringify(request_body)};
exit;
""") +
//
// отправляем запрос
вызвать.внешнийСервис("{comand_url}", "POST").сЗаголовками(("Content-Type", "application/json")).сТелом("{request_body}").сохранитьРезультатКакСтроку("responce") +
//
// включить вебхук - указать таймер ожидания 30 секунд и указать в какую переменную будет сохранен полученный JSON 
вызвать.выставитьВебхук(30).сохранитьРезультатКакСтроку("result") +
//

.сСоставнымТеломСообщения(*args)

...