Как исправить проблему с токеном в чате - PullRequest
1 голос
/ 14 мая 2019

API фреймворка бота для генерации прямого токена приводит к получению токена, который не может обработать веб-чат.

Недавно я заметил, что веб-чат на моем веб-сайте больше не может устанавливать прямую связь. Использование прямого секретного результата приводит к работающему веб-чату. Использование API-интерфейса бота для генерации очень длинного токена (816 символов), который веб-чат не может обработать (в результате появляется сообщение, например, не удается подключиться. Раньше это работало просто отлично, но теперь оно сломалось (и, насколько я знаю, ничего не изменилось)

Я использую PHP для вызова API и получения токена:

<?php
    $botSecret = 'DIRECLINE SECRET';
    $response = wp_remote_get( 'https://webchat.botframework.com/api/tokens',    array( 'headers' => 'Authorization: BotConnector ' . $botSecret ) );
if( is_array($response) ) {
  $header = $response['headers'];
  $token = $response['body'];
}
?>
<script type="text/javascript">
           var webChatToken = <?php echo $token; ?>;
       </script>

И Html \ Javascript для отображения клиента веб-чата

<html>
<body>
<div id="webchat" role="main"></div>   
    <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
    <script>  
       const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
         if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
           dispatch({
             type: 'WEB_CHAT/SEND_EVENT',
             payload: {
               name: 'webchat/join',
               value: { language: window.navigator.language }
             }
           });
         }
         return next(action);
       });
        window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({ token: webChatToken }),
        store,
        styleOptions: {
        },
        userID: 'N/A',
        username: 'Web Chat User',
        locale: 'nl-NL'
      }, document.getElementById('webchat'));
    </script>
  </body>
</html>

Я бы ожидал более короткий токен или хотя бы токен, который можно использовать для использования веб-чата

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Команда разработчиков BotFramework только что установила обновление, которое позволяет вам использовать секрет DirectLine с конечной точкой веб-чата, так что теперь вы можете использовать секрет DirectLine или веб-чат для подключения веб-чата к вашему боту.

const res = await fetch('https://webchat.botframework.com/api/tokens', {
    method: 'GET', 
    headers: { 
        Authorization: 'BotConnector <WEB_CHAT_SECRET | DIRECT_LINE_SECRET>'
    } 
});

const token = await res.json();

window.WebChat.renderWebChat({
    directLine: window.WebChat.createDirectLine({ token })
}, document.getElementById('webchat'));

Надеюсь, это поможет!

0 голосов
/ 21 мая 2019

Использование прямого секрета в клиенте веб-чата приводит к длинному токену длиной> 800 (длина варьируется) и ошибке 403, переводимой в сообщение «Невозможно подключиться» в клиенте.Икс.Несмотря на то, что метод создания соединения называется createDirectLine, клиентам веб-чата все еще нужны секреты веб-чата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...