Может ли бот получать изображение в виде сообщения или вложения от пользователя - PullRequest
0 голосов
/ 23 мая 2018

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

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Ответ: да, вы можете предоставить канал, который вы используете, позволяет вложения.Каналы имеют ограничения на такие вещи, как размер и типы файлов, поэтому это будет зависеть от того, какой канал вы используете.Так что, если вы не можете получить PDF для работы, попробуйте с изображением.Если изображение не работает, попробуйте использовать изображение меньшего размера.

Пользователи будут загружать файл через интерфейс канала, например, в эмуляторе: emulator file upload

Для получения изображений в вашем боте не требуется специальный код.Изображения будут присутствовать в Activity как Activity.Attachments Это List вложений или в вашем случае изображений.Это легко можно понять из ответа Раджеша, но для полноты приведем пример того, как что-то сделать с полученным файлом:

В RootDialog.cs

using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using System;
using System.Net;
using System.Threading.Tasks;

namespace Bot_Application15.Dialogs
{
    [Serializable]
    public class RootDialog : IDialog<object>
    {
        public Task StartAsync(IDialogContext context)
        {
            context.Wait(MessageReceivedAsync);

            return Task.CompletedTask;
        }

        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
        {
            var activity = await result as Activity;

            foreach (var file in activity.Attachments)
            {
                //where the file is hosted
                var remoteFileUrl = file.ContentUrl;
                //where we are saving the file
                var localFileName = @"C:\Users\{UserName}\pictures\test" + file.Name;

                using ( var webClient = new WebClient())
                {
                    webClient.DownloadFile(remoteFileUrl, localFileName);
                }
            }
            await context.PostAsync($"File received");

            context.Wait(MessageReceivedAsync);
        }
    }
}
0 голосов
/ 22 июня 2018

Да, это возможно в вашем методе MessageRecivedAsync диалога бота.

    private async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> result)
    {
        var message = await result;
        if (message.Attachments != null && message.Attachments.Any())
        {
            // Do something with the attachment
        }
        else
        {
            await context.PostAsync("Please upload a picture");
            context.Wait(this.MessageReceived);
        }
    }
0 голосов
/ 23 мая 2018

Да

Из документации nodejs здесь

// Create your bot with a function to receive messages from the user

var bot = new builder.UniversalBot(connector, function (session) {
    var msg = session.message;
    if (msg.attachments && msg.attachments.length > 0) {
     // Echo back attachment
     var attachment = msg.attachments[0];
        session.send({
            text: "You sent:",
            attachments: [
                {
                    contentType: attachment.contentType,
                    contentUrl: attachment.contentUrl,
                    name: attachment.name
                }
            ]
        });
    } else {
        // Echo back users text
        session.send("You said: %s", session.message.text);
    }
});

c# документация здесь

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