VoipWebhookParseResult

Результат парсинга сообщения с вебхука

Данный интерфейс используется в качестве результата функции VoipParseWebhookRequest и определяет производимые системой действия по результатам запроса на вебхук модуля телефонии.

Hierarchy

  • VoipWebhookParseResult

Properties

Optional callRecord

callRecord: VoipCallRecord

Информация о записи звонка.

Если это поле заполнено, то система сохранит запись звонка в ленту связанного элемента приложения. Данные из этого поля используются системой для отображения виджета прослушивания записи звонка в ленте элемента. Ссылка на запись разговора и его длительность также сохранятся в карточке звонка в разделе Телефония.

async function VoipParseWebhookRequest(request: FetchRequest): Promise<VoipWebhookParseResult> {
    if (typeof request.body !== 'string') {
        return {};
    }
    const data = JSON.parse(request.body);
    return {
        callRecord: {
            srcPhone: data.srcPhone,
            dstPhone: data.dstPhone,
            direction: VoipCallDirection.In,
            duration: data.duration,
            // Данные из этого поля будут доступны в функции VoipGetCallLink.
            call: {
                link: data.callLink,
            },
            disposition: VoipCallDisposition.Answered,
        }
    };
}

async function VoipGetCallLink(callData: any): Promise<string> {
    return callData.link; // Получаем данные, которые были сохранены в VoipParseWebhookRequest.
}

Optional event

Событие телефонии.

Если это поле заполнено, пользователь, которому позвонили или который инициировал исходящий звонок, увидит карточку звонка. В разделе Телефония будет создан или обновлён элемент приложения Звонок с информацией об этом звонке.

async function VoipParseWebhookRequest(request: FetchRequest): Promise<VoipWebhookParseResult> {
    if (typeof request.body !== 'string') {
        return {};
    }
    const data = JSON.parse(request.body);
    return {
        event: {
            event: VoipWebhookEvent.NotifyStart,
            direction: VoipCallDirection.In,
            dstPhone: data.dstPhone,
            srcPhone: data.srcPhone,
            disposition: VoipCallDisposition.Unknown,
        }
    };
}

Optional response

response: HttpResponse

Если поле заполнено, то клиенту, который выполняет запрос на вебхук, отправляется HTTP-ответ.

async function VoipParseWebhookRequest(request: FetchRequest): Promise<VoipWebhookParseResult> {
    return {
        response: new HttpResponse()
            .status(400)
            .content('Hello, world!'),
    };
}