Предложить пользователю загрузить файл в диалоге с MS Bot Framwork v4 - PullRequest
2 голосов
/ 20 марта 2019

У меня есть диалоговое окно, которое потребует от пользователя загрузить файл / файлы.Я хотел бы предложить пользователю и нажать на кнопку, чтобы открыть окно просмотра файлов, чтобы выбрать файл, который он хочет загрузить.Я не хочу использовать средство выбора файлов в окне ввода текста в окне веб-чата (пользователи находят это непонятным).Это возможно?Я видел в документации для v3, что есть диалог AttachmentPrompt.Однако в документации для v4 я вижу только то, что упомянуто здесь в одной строке ... https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-concept-dialog?view=azure-bot-service-4.0 Однако, кроме того, что звучит многообещающе, похоже, нет документации по этой функции.

Спасибо залюбая помощь, которую вы можете оказать!

1 Ответ

1 голос
/ 29 марта 2019

PromptAttachment не определяет визуализацию на стороне клиента или код загрузки файла на стороне клиента. Чтобы элемент управления WebChat отвечал на пользовательскую кнопку, вам необходимо предоставить промежуточное ПО для вложений для элемента управления веб-чата, и бот должен отправить пользовательский тип вложения.

Пользовательские вложения:

private class FileUpload : Attachment
{
    public FileUpload()
        : base("application/uploadAttachment") { }
}

Ответ с приложением FileUpload:

var reply = activity.CreateReply("Upload a File");                        
reply.Attachments.Add(new FileUpload());
await connector.Conversations.SendToConversationAsync(reply);

Хостинг страниц Веб-чат:

<!DOCTYPE html>
<html>
<body>
    <div id="webchat" />

    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    <script src="https://unpkg.com/react@16.5.0/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16.5.0/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/react-redux@5.0.7/dist/react-redux.min.js"></script>
    <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>

    <script>
        function uploadFile() {
            document.querySelector('[title="Upload file"]').click();
        }

    </script>
    <script type="text/babel">
        var chatbot = new WebChat.createDirectLine({
            token: 'YourToken',
            webSocket: true,
        });

        const attachmentMiddleware = () => next => card => {
            switch (card.attachment.contentType) {
                case 'application/uploadAttachment':
                    return (<button type="button" onClick={uploadFile}>Upload file</button>);

                default:
                    return next(card);
            }
        };

        WebChat.renderWebChat({
            directLine: chatbot,
            botAvatarInitials: 'Bot',
            attachmentMiddleware,
        }, document.getElementById('webchat'));

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