...
Code Block | ||
---|---|---|
| ||
// передача 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 | ||
---|---|---|
| ||
// установили адрес внешней системы
установитьПеременную("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)
...