UCWA отвечает на входящее сообщение

Я пытаюсь ответить на входящее сообщение (думаю, в этом случае мне не нужно отправлять никаких приглашений).

Как только ресурс «сообщение» от отправителя «разговора» получен, я взял ссылку

<link rel="messaging" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging" /> 

Затем я построил URL:

url = host + "/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging" + "?OperationId=73dc2a78-2c09-43d3-ade9-166a17845a03";

(Идентификатор операции, который я сгенерировал)

После этого я POST по этой ссылке с ответным сообщением.

Ответ был:

<?xml version="1.0" encoding="utf-8"?>
<reason xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/rtc/2012/03/ucwa">
    <code>ServiceFailure</code>
    <subcode>None</subcode>
    <message>Your request couldn't be completed.</message>
    <debugInfo>
        <property name="errorReportId">14cb93491da94ab8a638e148462fcc21</property>
    </debugInfo>
    <parameters />
</reason>

Мой сценарий:

1) как только приходит событие «messagingInvitation», я «перехожу» по ссылке «принять». 2) следующие события, которые я получаю, которые содержат ресурс «разговор»:

<sender rel="conversation" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903">
        <updated rel="messaging" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging">
            <resource rel="messaging" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging">
                <link rel="conversation" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903" />
                <link rel="stopMessaging" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging/terminate" />
                <property name="state">Connecting</property>
            </resource>
        </updated>
    </sender>

3) Затем наступает другое «событие», соответствующая часть:

<sender rel="communication" href="/ucwa/oauth/v1/applications/103298024370/communication">
    <updated rel="conversation" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903">
        <resource rel="conversation" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903">
            <link rel="applicationSharing" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/applicationSharing" />
            <link rel="audioVideo" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/audioVideo" />
            <link rel="dataCollaboration" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/dataCollaboration" />
            <link rel="messaging" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/messaging" />
            <link rel="phoneAudio" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/phoneAudio" />
            <link rel="localParticipant" href="/ucwa/oauth/v1/applications/103298024370/communication/conversations/81bf5ef8-885f-4579-9add-a5857ccf6903/participants/XXXXX" title="xxxxxxx" />
            <link rel="addParticipant" href="/ucwa/oauth/v1/applications/103298024370/communication/participantInvitations?conversation=81bf5ef8-885f-4579-9add-a5857ccf6903" />
            <property name="state">Connected</property>
            <property name="threadId">AdKCFu+gFQccG58iQA6mppaTcfoeBwAABC+wAACcbnAAAHuvoAAhdqzwAAv+RhAAAuLo8A==</property>
            <property name="subject"></property>
            <propertyList name="activeModalities">
                <item>Messaging</item>
            </propertyList>
            <property name="importance">Normal</property>
            <property name="recording">False</property>
        </resource>

<property name="state">Connected</property>

Так это значит, что я подключен, верно?

Каким должен быть мой следующий шаг?


person yuris    schedule 09.02.2017    source источник


Ответы (1)


Обновление моего сценария

Вы действительно подключены как к разговору, так и к обмену сообщениями. Ваш следующий шаг должен состоять в том, чтобы либо отправить запрос GET на ресурс обмена сообщениями, либо найти события, связанные с обменом сообщениями, которые содержат ссылки на sendMessage. Наконец, с помощью этой ссылки sendMessage вы можете предоставить текстовое/простое тело с сообщением, которое вы хотите отправить.

Начальные примечания

Вы не сможете отвечать на любые полученные сообщения, если нет активного разговора. ресурс обмена сообщениями не является правильным ресурсом для ответа на сообщения. . В вашем сценарии, если вы получаете сообщение от другого контакта и не установили беседу, вы будете искать ссылку messagingInvitation, содержащее сообщение. Если это ваш сценарий, предполагаемое решение состоит в том, чтобы проверить ссылки на ресурсы обмена сообщениями и найти addMessaging. и POST там, где она появляется, вы можете добавить ответное сообщение.

Если это не тот сценарий, не стесняйтесь предоставлять дополнительную информацию.

person ShelbyZ    schedule 09.02.2017
comment
Зачем мне нужен «GET-запрос на ресурс обмена сообщениями»? Я получу там ссылку sendMessage? - person yuris; 09.02.2017
comment
Если вы не видите никаких ресурсов обмена сообщениями в канале событий, которые предоставляют ссылки (sendMessage, stopMessaging и т. д.), вам потребуется вручную выполнить GET для обмена сообщениями, чтобы получить эту информацию. - person ShelbyZ; 09.02.2017
comment
Спасибо, сработало. Еще один небольшой вопрос: после того, как разговор «подключен», как долго он будет оставаться на связи? Пока другая сторона не закроет окно чата? Есть ли тайм-аут? - person yuris; 11.02.2017
comment
Если в беседе нет активности (сообщения или активность модальности), сервер может закрыть эту беседу. Я не знаю точное значение тайм-аута. - person ShelbyZ; 13.02.2017