C# 从Bot框架调用FB问候语

C# 从Bot框架调用FB问候语,c#,facebook,facebook-graph-api,botframework,C#,Facebook,Facebook Graph Api,Botframework,我试图使用C#SDK创建FB greting,并根据FB文档发送curl请求,如下所示: 然而,似乎FB没有回应。任何指点都将不胜感激。谢谢 public class MessagesController : ApiController { int i = 0; /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// &

我试图使用C#SDK创建FB greting,并根据FB文档发送curl请求,如下所示:

然而,似乎FB没有回应。任何指点都将不胜感激。谢谢

public class MessagesController : ApiController
{
    int i = 0;
    /// <summary>
    /// POST: api/Messages
    /// Receive a message from a user and reply to it
    /// </summary>
    public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
    {

        if (activity.Type == ActivityTypes.Message)
        {
            //await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
            await Conversation.SendAsync(activity, () => new Dialogs.TheQnAMakerDialog());
        }
        else
        {                
            HandleSystemMessage(activity);
        }
        var response = Request.CreateResponse(HttpStatusCode.OK);
        return response;
    }

    private Activity HandleSystemMessage(Activity message)
    {
        if (message.Type == ActivityTypes.DeleteUserData)
        {
            // Implement user deletion here
            // If we handle user deletion, return a real message
        }
        else if (message.Type == ActivityTypes.ConversationUpdate)
        {
            // Handle conversation state changes, like members being added and removed
            // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
            // Not available in all channels
            var callFB=SendFBGreeting();                
        }
        else if (message.Type == ActivityTypes.ContactRelationUpdate)
        {
            // Handle add/remove from contact lists
            // Activity.From + Activity.Action represent what happened
        }
        else if (message.Type == ActivityTypes.Typing)
        {
            // Handle knowing tha the user is typing
        }
        else if (message.Type == ActivityTypes.Ping)
        {
        }

        return null;
    }

    private async Task<HttpResponseMessage> SendFBGreeting()
    {
        var payload = @"{
            ""setting_type"": ""greeting"",
            ""greeting"": {
                ""text"": ""Timeless apparel for the masses.""
            }
        }";
        var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(payload));
        var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
        using (var client = new HttpClient())
        {
            // Do the actual request and await the response
            var httpResponse = await client.PostAsync("https://graph.facebook.com/v2.6/me/thread_settings?access_token=xxx", httpContent);

            // If the response contains content we want to read it!
            if (httpResponse.Content != null)
            {
                var responseContent = await httpResponse.Content.ReadAsStringAsync();

            }
            var response = Request.CreateResponse(HttpStatusCode.OK);
            return response;
        }
    }
}
公共类消息控制器:ApiController
{
int i=0;
/// 
///帖子:api/Messages
///接收来自用户的消息并回复
/// 
公共异步任务发布([FromBody]活动)
{
if(activity.Type==ActivityTypes.Message)
{
//wait Conversation.sendaync(活动,()=>newdialogs.RootDialog());
wait Conversation.SendAsync(活动,()=>新对话框.TheQnAMakerDialog());
}
其他的
{                
HandleSystemMessage(活动);
}
var response=Request.CreateResponse(HttpStatusCode.OK);
返回响应;
}
私有活动HandleSystemMessage(活动消息)
{
if(message.Type==ActivityTypes.DeleteUserData)
{
//在此处执行用户删除
//如果我们处理用户删除,返回一条真实的消息
}
else if(message.Type==ActivityTypes.ConversationUpdate)
{
//处理会话状态更改,如添加和删除成员
//使用Activity.MembersAdded和Activity.MembersRemoved以及Activity.Action获取信息
//并非所有频道都可用
var callFB=SendFBGreeting();
}
else if(message.Type==ActivityTypes.ContactRelationUpdate)
{
//处理联系人列表中的添加/删除
//Activity.From+Activity.Action表示发生了什么
}
else if(message.Type==ActivityTypes.Typing)
{
//处理知道用户正在键入的内容
}
else if(message.Type==ActivityTypes.Ping)
{
}
返回null;
}
专用异步任务SendFBGreeting()
{
var有效负载=@“{
“”设置类型“”:“”问候语“”,
“问候语”:{
“文本”:“大众永恒的服饰”
}
}";
var stringPayload=wait Task.Run(()=>JsonConvert.SerializeObject(有效负载));
var httpContent=newstringcontent(stringPayload,Encoding.UTF8,“application/json”);
使用(var client=new HttpClient())
{
//执行实际请求并等待响应
var httpResponse=wait client.PostAsync(“https://graph.facebook.com/v2.6/me/thread_settings?access_token=xxx“,httpContent);
//如果响应包含我们想要阅读的内容!
if(httpResponse.Content!=null)
{
var responseContent=wait-httpResponse.Content.ReadAsStringAsync();
}
var response=Request.CreateResponse(HttpStatusCode.OK);
返回响应;
}
}
}

Facebook不会返回会话更新事件。尝试在其他地方调用SendFBGreeting()


请记住,问候语文本将在用户开始前显示,因此,即使您收到ConversationUpdate事件,在这种情况下也无所谓。Facebook不会返回ConversationUpdate事件。尝试在其他地方调用SendFBGreeting()

请记住,问候语文本将在用户开始前显示,因此即使您收到ConversationUpdate事件,在这种情况下也无所谓