Към съдържанието
REST API

SMS и обаждания направо от сценарий в Make

Make извиква REST API на volai през общия HTTP модул - от сценария изпращате SMS, стартирате обаждане с гласов агент и получавате резултата чрез webhook.

1Подгответе ключа като connection

В модула HTTP > Make a request добавете заглавие Authorization със стойност Bearer vk_TVUJ_KLIC (ключа ще намерите в портала, в раздел AI асистент). Запазете го като връзка за многократна употреба, за да не го пишете наново във всеки модул.

2Изпратете SMS от сценария

Добавете модул HTTP > Make a request: метод POST, URL https://volai.cz/v1/messages, тяло от тип Raw (JSON) с полетата to и body - стойностите спокойно картографирайте от bundle на предишния модул (ред от таблица, webhook) вместо да ги пишете ръчно. Включете Parse response, за да се разложат priceHal (цената в халери за всички сегменти) и segments от отговора направо в bundle за по-нататъшно картографиране - без това получавате само суров текст и ще трябва да добавите отделен модул Parse JSON. При текст на кирилица сегментите излизат повече, отколкото при съобщение само с ASCII знаци.

json
{
  "to": "+420777123456",
  "body": "Вашата поръчка е готова за получаване."
}

3Стартирайте обаждане с гласов агент

Добавете втори модул HTTP > Make a request: POST https://volai.cz/v1/calls, тяло Raw (JSON) с to и agentId на съществуващ гласов агент - агентът трябва да има зададен собствен номер, иначе заявката завършва с грешка agent_no_number. Полето to обикновено не го попълвате ръчно, а го картографирате от bundle на предишния модул (например телефонен номер от ред в Google Sheets) - щракнете в полето и изберете променлива от менюто. И тук е полезно Parse response: разлага id на стартираното обаждане направо в bundle, за да може да се картографира нататък без отделен модул Parse JSON. Модулът само стартира обаждането - за истинския резултат (приключило, без отговор, неуспешно) ще научите едва от webhook в следващата стъпка.

json
{
  "to": "+420777123456",
  "agentId": "ag_kx91fa2b"
}

4Получавайте събития обратно през Custom webhook

Добавете модул Webhooks > Custom webhook - Make Ви генерира URL и веднага потвърждава получената заявка (което изпълнява условието за бърз отговор 200 от /docs/webhooky). Същия адрес запазете през PUT /v1/webhook заедно със списък на събитията, които Ви интересуват. Внимание: празно поле events не означава никакво събитие, а всички без изключение - по-добре винаги ги изброявайте. Отговорът връща и secret - запазете го веднага, GET /v1/webhook вече няма да го върне.

bash
curl -X PUT https://volai.cz/v1/webhook \
  -H "Authorization: Bearer vk_TVUJ_KLIC" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hook.eu2.make.com/xxxxxxxx", "events": ["call.completed", "message.sent"]}'

5Разклонете сценария според вида на събитието

Полето event в тялото на webhook (call.completed, call.failed, call.no_answer, call.missed, message.sent, message.received) различавайте с модула Router или с филтър на връзката на клона. Проверката на подписа Volai-Signature (HMAC-SHA256 върху {t}.{rawBody} с Вашия secret) добавете по точната формула на /docs/webhooky - при чувствителен сценарий (плащания, записване в счетоводство) не я пропускайте.

Какво ще постигнете

Iterator разпраща SMS по списък с контакти

Модулът Iterator разлага масив от контакти (например от Google Sheets или от JSON масив) на отделни елементи, а HTTP модулът след това за всеки от тях извиква POST /v1/messages поотделно - типично масово известие или напомняне за цяла група клиенти наведнъж.

Филтър на връзката решава на кого да се звъни

Make позволява да се постави условие директно върху връзката между модулите - филтърът пропуска нататък само редовете, които го изпълняват (например срокът е утре, а клиентът още не е потвърдил), и само те задействат HTTP модула към POST /v1/calls.

Error handler улавя неуспешно обаждане

Към HTTP модула, който извиква /v1/calls, добавете error handler маршрут с директива Ignore - неуспехът на едно обаждане (например невалиден номер) така записвате в таблица или изпращате в Slack за ръчна проверка, без да се срине целият сценарий.

Често задавани въпроси

Има ли за volai собствено приложение в Make marketplace?
Засега не - достатъчни са общите модули HTTP и Webhooks, които Make винаги има на разположение. Собствено приложение в Make е въпрос на Make Technology Partner Program, с който засега не се занимаваме.
Колко операции изразходва сценарий с два HTTP модула?
Всяко изпълнение на модул се брои за една операция - сценарий, който извиква /v1/messages и после /v1/calls, изразходва приблизително две до три операции на изпълнение, според това колко модула стоят между тях. Лимитът на операциите се определя от Вашия план в Make, не от volai.
Как да настроя error handler върху HTTP модула, за да не спира целият сценарий неуспехът на едно обаждане?
Щракнете с десния бутон върху HTTP модула и добавете error handler маршрут. Вътре изберете директивата Ignore - сценарият игнорира грешката и продължава нататък, сякаш модулът не е върнал изход. Ако следващите модули имат нужда от резервна стойност вместо липсващия изход, използвайте Resume със собствен резервен изход. До Break посягайте само когато искате изпълнението да спре веднага, а стартирането да се повтори после ръчно или автоматично.
Защо Custom webhook връща `Accepted` веднага, още преди сценарият да приключи?
Така Custom webhook модулът работи по подразбиране - потвърждава получаването със статус 200 и текст Accepted незабавно, а сценарият след това приключва във фонов режим. На извикващия (например volai) му стига да получи 200 до няколко секунди - това е изпълнено.
Защо HTTP модулът след POST /v1/calls продължава веднага, въпреки че обаждането още не е приключило?
POST /v1/calls само стартира обаждането и връща неговия id - синхронно, за миг. Дали обаждането наистина е стигнало до отсрещната страна, приключило е или е неуспешно, ще научите по-късно през webhook call.completed / call.failed / call.no_answer / call.missed. Затова сценарият не трябва нито да чака, нито да пита периодично - достатъчно е да вържете този резултат към модула Custom webhook, описан по-горе.

Опитайте веднага

Регистрирайте се и първите 50 kr са от нас.