0

嗨,我尝试了所有这些将视频附加到机器人的方法。他们都在机器人模拟器中工作正常。但是当我将它发布到信使时,它会引发异常。(由于该消息,我无法通过我只知道的方式看到异常。有没有办法查看或记录异常?)。Messenger不支持视频卡吗?还是不支持将 youtube 作为 url 链接?

以下是代码:

     AddStep(async (stepContext, cancellationToken) =>
        {
            var reply = stepContext.Context.Activity.CreateReply();
            reply.Attachments = new List<Attachment>();
            reply.Attachments.Add(GetVideoCard().ToAttachment());
            await stepContext.Context.SendActivityAsync(reply, cancellationToken);
            return await stepContext.NextAsync();
        });

////////////////

   private static VideoCard GetVideoCard()
    {
        var videoCard = new VideoCard
        {
            Title = "Budgeting Introduction",
            Subtitle = "by Finko",

            Media = new List<MediaUrl>
            {
                new MediaUrl()
                {
                    Url = "https://www.youtube.com/watch?v=XLo1geVokhA",
                },
            },
            Buttons = new List<CardAction>
            {
                new CardAction()
                {
                    Title = "Learn More at Finko.PH",
                    Type = ActionTypes.OpenUrl,
                    Value = "https://m-moreno.wixsite.com/finkoph?fbclid=IwAR1NVtlyKfzZ0mYFIWva8L-d8TUv4KFpt_m1i1ij3raT-pbWr2c3-kqzB2Q",
                },
            },
        };

        return videoCard;
    }

    AddStep(async (stepContext, cancellationToken) =>
        {
            var activity = stepContext.Context.Activity;
            await stepContext.Context.SendActivityAsync(CreateResponse(activity, CreateVideoCardAttacment()));
            return await stepContext.NextAsync();
        });

////////////////////////

   private Activity CreateResponse(Activity activity, Attachment attachment)
    {
        var response = activity.CreateReply();
        response.Attachments = new List<Attachment>() { attachment };
        return response;
    }

    private Attachment CreateVideoCardAttacment()
    {
        return new VideoCard()
        {
            Title = "Are you a Seafarer? OFW? FREE PERSONAL FINANCIAL ADVICE HERE!!",
            Media = new List<MediaUrl>()
            {
                new MediaUrl("https://www.youtube.com/watch?v=XLo1geVokhA")
            },
            Buttons = new List<CardAction>()
            {
                new CardAction()
                {
                    Type = ActionTypes.OpenUrl,
                    Title = "Learn More at Finko.PH",
                    Value = "https://m-moreno.wixsite.com/finkoph?fbclid=IwAR1NVtlyKfzZ0mYFIWva8L-d8TUv4KFpt_m1i1ij3raT-pbWr2c3-kqzB2Q"
                }
            },
            Subtitle = "by Finko.Ph",
            Text = "Are you tired of getting bogus financial advice? Tired of having 'kape' just to find out it was networking, or a pyramid scheme? Tired of scouring the internet for HOURS but not finding what you're looking for? We're here to help! We give financial advice and will educate you on financial literacy topics, ABSOLUTELY FREE!!"
        }.ToAttachment();
    }

       Activity reply = stepContext.Context.Activity.CreateReply();
            var card = new VideoCard
            {
                Title = "Finko.ph",
                Media = new List<MediaUrl>()
                {
                    new MediaUrl("https://www.youtube.com/watch?v=XLo1geVokhA")
                },
                Buttons = new List<CardAction>()
                {
                    new CardAction()
                    {
                        Type = ActionTypes.OpenUrl,
                        Title = "Learn More at Finko.PH",
                        Value = "https://m-moreno.wixsite.com/finkoph?fbclid=IwAR1NVtlyKfzZ0mYFIWva8L-d8TUv4KFpt_m1i1ij3raT-pbWr2c3-kqzB2Q"
                    }
                },
            };
            reply.Attachments.Add(card.ToAttachment());
            await stepContext.Context.SendActivityAsync(reply);
            return await stepContext.NextAsync();

    var reply1 = stepContext.Context.Activity.CreateReply();
            var attachment1 = new Attachment
            {
                ContentUrl = "https://www.youtube.com/watch?v=XLo1geVokhA",
                ContentType = "video/mp4",
                Name = "imageName1",
            };
            reply1.Attachments = new List<Attachment>() { attachment1 };
            await stepContext.Context.SendActivityAsync(reply1, cancellationToken);
            return await stepContext.NextAsync();

所有这些代码都在机器人模拟器中工作,但在 Messenger 中却没有。任何帮助将不胜感激,谢谢。

4

1 回答 1

0

BotFramework 将视频卡转换为 Facebook Messenger 的媒体模板,根据 Facebook 的开发人员文档,媒体模板不允许任何外部 URL,仅允许 Facebook 上的那些。您必须将视频上传到 Facebook 或直接提供指向 mp4 文件的 URL,不幸的是,YouTube 不提供该文件。

有关更多详细信息,请查看有关媒体模板的 Facebook 文档。

于 2019-02-18T17:47:45.083 回答