Получите уведомление об изменении статуса факса для FaxOut RingCentral API
Я использую RingCentral FaxOut API для отправки факса. Статус факса в этом ответе находится в очереди. Есть ли подписка для получения обновленного статуса факса для этого сообщения. Блог RingCentral упоминает о получении последнего статуса, используя вызов GetMessage к их API.
https://www.ringcentral.com/blog/2015/02/know-fax-transmission-api-succeeded/
У них есть Push-уведомления для присутствия пользователя. https://github.com/ringcentral/ringcentral-js
1 ответ
Сначала существует более старый API FaxOut, а затем - более новый ресурс Message-Fax API RingCentral Platform. Последний - это тот, который я собираюсь рассмотреть здесь, если вы используете предыдущую версию, пожалуйста, создайте службу поддержки с RingCentral для помощи.
Не очень хорошая новость заключается в том, что нет прямого способа использовать Push-уведомления (подписки) для получения определенных данных о состоянии факса, которые вы ищете, но есть возможность отслеживать события хранилища сообщений и фильтровать входящие данные для EVENT_DATA.changes..type === "Факс".
Узнайте о том, как использовать message-store
EventFilter в ваших подписках: https://developers.ringcentral.com/api-docs/latest/index.html
Кроме того, я создал демонстрационное приложение в Node.js, показывающее разработчикам, как создавать подписки (оно использует JavaScript SDK, на который вы ссылались в своем вопросе): https://github.com/bdeanindy/ringcentral-subscription-basics (есть настройка параметры, которые вы можете установить в .env
файл для указания, какие EventFilters вы хотите использовать).
Вот поток событий подписки, когда я отправляю исходящий факс из RingCentral. Обратите внимание на СОБЫТИЯ ФИЛЬТРОВ, одним из которых является подписка на message-store
именно здесь факсимильные сообщения становятся доступными для разработчиков, использующих API (я добавил легкие комментарии над каждой фазой событий):
Succesfully logged into the RC Account
EVENT FILTERS: [ '/account/~/extension/2557490012',
'/account/~/extension/2557490012/presence?detailedTelephonyState=true&aggregated=true',
'/account/~/extension/2557490012/message-store',
'/account/~/extension/2557490012/presence/line',
'/account/~/extension/2557490012/message-store/instant?type=SMS' ]
SUBSCRIPTION CREATED SUCCESSFULLY
Fax Sent
SUBSCRIPTION NOTIFICATION.....
{ uuid: '8004a0b2-7907-458b-8a9b-ec1ba3202f5e',
event: '/restapi/v1.0/account/2557490012/extension/2557490012/message-store',
timestamp: '2016-09-30T22:43:53.762Z',
subscriptionId: 'bd6a307b-a05f-4421-acc5-85f093aae2b3',
body:
{ extensionId: 2557490012,
lastUpdated: '2016-09-30T22:43:43.902+0000',
changes: [ { type: 'Fax', newCount: 1, updatedCount: 0 }, [length]: 1 ] } }
Waiting to connect
SUBSCRIPTION NOTIFICATION.....
{ uuid: '627d3cdf-1638-4029-9e0b-94bbf3325c61',
event: '/restapi/v1.0/account/2557490012/extension/2557490012/message-store',
timestamp: '2016-09-30T22:44:13.776Z',
subscriptionId: 'bd6a307b-a05f-4421-acc5-85f093aae2b3',
body:
{ extensionId: 2557490012,
lastUpdated: '2016-09-30T22:44:01.879+0000',
changes: [ { type: 'Fax', newCount: 0, updatedCount: 1 }, [length]: 1 ] } }
SUBSCRIPTION NOTIFICATION.....
{ uuid: 'f1e1310e-11c7-479d-b988-087379bdcad3',
event: '/restapi/v1.0/account/2557490012/extension/2557490012/message-store',
timestamp: '2016-09-30T22:44:23.769Z',
subscriptionId: 'bd6a307b-a05f-4421-acc5-85f093aae2b3',
body:
{ extensionId: 2557490012,
lastUpdated: '2016-09-30T22:44:15.565+0000',
changes: [ { type: 'Fax', newCount: 0, updatedCount: 1 }, [length]: 1 ] } }
Waiting to have sent confirmation
SUBSCRIPTION NOTIFICATION.....
{ uuid: '2148d2d9-8e05-4adc-8019-518774187116',
event: '/restapi/v1.0/account/2557490012/extension/2557490012/message-store',
timestamp: '2016-09-30T22:45:33.767Z',
subscriptionId: 'bd6a307b-a05f-4421-acc5-85f093aae2b3',
body:
{ extensionId: 2557490012,
lastUpdated: '2016-09-30T22:45:21.232+0000',
changes: [ { type: 'Fax', newCount: 0, updatedCount: 1 }, [length]: 1 ] } }
Но как определить, был ли отправлен факс, находится в очереди или произошел сбой? Вы используете свойство EVENT.event, чтобы ПОЛУЧИТЬ фильтрацию списка хранилища сообщений в запросе для: messageType=Fax&availability=Alive&direction=Outbound&messageStatus=Sent
Затем в результирующих записях хранилища сообщений появится новый элемент в records
Вы можете использовать to.phoneNumber, чтобы соответствовать событию происхождения (HTTP POST для отправки факса).
{
"uri": "{{REMOVED_FOR_SECURITY}}",
"id": {{REMOVED_FOR_SECURITY}},
"to": [
{
"phoneNumber": "+{{REMOVED_TO_PREVENT_SPAM}}",
"name": "Hello Fax",
"messageStatus": "Sent"
}
],
"type": "Fax",
"creationTime": "2016-09-30T22:43:43.000Z",
"readStatus": "Unread",
"priority": "Normal",
"attachments": [
{
"id": {{REMOVED_FOR_SECURITY}},
"uri": "{{REMOVED_FOR_SECURITY}}",
"type": "RenderedDocument",
"contentType": "application/pdf"
}
],
"direction": "Outbound",
"availability": "Alive",
"messageStatus": "Sent",
"faxResolution": "High",
"faxPageCount": 2,
"lastModifiedTime": "2016-09-30T22:45:21.232Z",
"coverIndex": 0
}