Есть ли способ добавить историю разговоров при подключении к прямой линии? - PullRequest
0 голосов
/ 28 октября 2019

Мы используем botframework-webchat v4. Есть ли способ предоставить историю, которая будет отображаться в чате?

В настоящее время это то, что у меня есть, но оно не работает, не уверен, какой формат должен быть для действий в магазине.

const store = window.WebChat.createStore(
    {
        activities: ['{"type":"message",...}'] 
    },
    ({ dispatch }: { dispatch: any }) => (next: any) => (action: any) => {
        if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
            const { activity } = action.payload;

            if (activity.type === 'event' && activity.name === 'sample:backchannel') {
                alert(JSON.stringify(activity, null, 2));
            }
        }

        return next(action);
    }
)

window.WebChat.renderWebChat(
    {
        directLine: this.directLine,
        userID: this.userId,
        styleOptions,
        store
    },
    this.botWindowElement.nativeElement
);

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Ваше решение выше будет технически работать. Хотя в долгосрочной перспективе это не очень масштабируемо. Я бы порекомендовал вам посмотреть этот экспериментальный пример BotFramework-WebChat, История бесед . Он использует sendConversationHistory API. Этот пример немного сложен, но будет делать именно то, что вы хотите, т.е. загружать разговор предыдущего пользователя при запуске нового сеанса.

Если вы хотите восстановить соединениепредыдущий разговор (то есть продолжить разговор, используя тот же conversationId), тогда вы должны знать, что у службы Direct Line есть определенные ограничения. Повторное подключение будет работать только в течение 14 дней после последнего действия в этом разговоре и только 24 часа в случае наличия действий.

Надежда на помощь!

0 голосов
/ 30 октября 2019

@ StevenKanberg Спасибо за помощь! Я нашел ответ в исходном коде BotFramework-WebChat.

Вот пример,

test('absolute timestamp', async () => {
  const activities = [
    {
      type: 'message',
      id: '6266x5ZXhXkBfuIH0fNx0h-o|0000000',
      timestamp: '2019-08-08T16:41:12.9397263Z',
      from: {
        id: 'dl_654b35e09ab4149595a70aa6f1af6f50',
        name: '',
        role: 'user'
      },
      textFormat: 'plain',
      text: 'echo "Hello, World!"'
    },
    {
      type: 'message',
      id: '6266x5ZXhXkBfuIH0fNx0h-o|0000001',
      timestamp: '2019-08-08T16:41:13.1835518Z',
      from: {
        id: 'webchat-mockbot',
        name: 'webchat-mockbot',
        role: 'bot'
      },
      text: 'Echoing back in a separate activity.'
    },
    {
      type: 'message',
      id: '6266x5ZXhXkBfuIH0fNx0h-o|0000002',
      timestamp: '2019-08-08T16:41:13.3963019Z',
      from: {
        id: 'webchat-mockbot',
        name: 'webchat-mockbot',
        role: 'bot'
      },
      text: 'Hello, World!'
    }
  ];
  const styleOptions = { timestampFormat: 'absolute' };
  const { driver } = await setupWebDriver({ storeInitialState: { activities }, props: { styleOptions } });
...