slack bot和form控件不调用外部api

时间:2018-04-26 22:11:02

标签: slack slack-api

我正在尝试调用我的api,它是通过ngrok自托管的。 ngrok工作正常,因为我可以在浏览器中打开外部https站点并加载它。

那么,我有什么

松弛形式:

var request = require('request');

var RegisterMsgBuilder = function () { }

RegisterMsgBuilder.prototype.build = function (data) {
return {
    "text": "Would you like to play a game?",
    "attachments": [
        {
            "text": "Choose a game to play",
            "fallback": "You are unable to choose a game",
            "callback_id": "wopr_game",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "actions": [
                {
                    "name": "game",
                    "text": "Chess",
                    "type": "button",
                    "value": "chess"
                },
                {
                    "name": "game",
                    "text": "Falken's Maze",
                    "type": "button",
                    "value": "maze"
                },
                {
                    "name": "game",
                    "text": "Thermonuclear War",
                    "style": "danger",
                    "type": "button",
                    "value": "war",
                    "confirm": {
                        "title": "Are you sure?",
                        "text": "Wouldn't you prefer a good game of chess?",
                        "ok_text": "Yes",
                        "dismiss_text": "No"
                    }
                }
            ]
        }
    ]
}
};


exports.RegisterMsgBuilder = RegisterMsgBuilder;

这会产生一个松弛的形式,有3个按钮。

我使用以下网址设置了交互式组件: https://xyz.ngrok.io/api/values

这个网址指向一个新的asp.net webapi项目。我在这里没有改变任何东西。它有一个看起来像的控制器:

namespace WebApplication2.Controllers
{
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
        public void Post()
        {
            int x = 66;

        }
    }
}

点击我的松弛消息中的按钮什么也没做。怎么样?

1 个答案:

答案 0 :(得分:0)

首先,您尚未对API采取任何形式的响应。所有控制器似乎在接收POST时都将x设置为等于66

当有人在频道中点击该按钮时,系统会对您的操作网址发出POST请求。它将包含有关单击按钮,原始消息等的一些信息(https://api.slack.com/interactive-messages#responding)。您似乎没有从应用程序收到的POST中提取值 - 您肯定需要这样做。