Как определить доставленные и недоставленные сообщения при получении истории чата от ejabberd? - PullRequest
0 голосов
/ 04 января 2019

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

Это мой код в файле service.ts:

this.Connection.mam.query(from, {
    with: to,
    before: '',
    max: '10',
    onMessage: (message) = > {
        console.log(message);
    },
    onComplete: (response) = > {
        console.log('Got all the messages');
    }
});

Вывод, который я получаю:

<message
    xmlns=​"jabber:​client" to=​"sashank@localhost/​9158846669251631426100" from=​"sashank@localhost">​

    <result
        xmlns=​"urn:​xmpp:​mam:​2" id=​"1546597812368545">​

        <forwarded
            xmlns=​"urn:​xmpp:​forward:​0">​

            <message
                xmlns=​"jabber:​client" xml:lang=​"en" 
         to="murali@localhost" from=​"sashank@localhost/​18846625227131105454610" type=​"chat" id=​"0777d27e-7238-42ba-9063-78185c05e76d">​

                <archived
                    xmlns=​"urn:​xmpp:​mam:​tmp" by=​"sashank@localhost" id=​"1546597812368545">​

                </archived>​

                <stanza-id
                    xmlns=​"urn:​xmpp:​sid:​0" by=​"sashank@localhost" id=​"1546597812368545">​

                </stanza-id>​

                <request
                    xmlns=​"urn:​xmpp:​receipts">​

                </request>​

                <body>​Hello buddy! How are you</body>​

            </message>​

            <delay
                xmlns=​"urn:​xmpp:​delay" from=​"localhost" stamp=​"2019-01-04T10:​30:​12.368545Z">​

            </delay>​

        </forwarded>​

    </result>​

</message>​

Это доставленное сообщение, а недоставленные сообщения также выглядят одинаково в структуре строфа без дополнительных атрибутов. Заранее спасибо.

1 Ответ

0 голосов
/ 06 января 2019

Это правильно. Они будут выглядеть одинаково. В хранилище MAM просто хранится лента «сообщений», включая сообщения с телом, сообщения о состоянии и т. Д. Таким образом, вам нужно получить этот канал, а затем выполнить постобработку на стороне клиента - получить сообщения с телом, затем получить статусы и сопоставить статусы с их сообщения. И только потом показывать обработанные данные конечному пользователю.

Не очень чистый подход, но так работает МАМ

...