0

我不确定我做错了什么,但我似乎无法打开对话框,但我得到了{status: 'OK'}回应......

最重要的版本:5.13.2

斜杠命令的帖子是短暂的

我的斜杠命令工作正常,交互式按钮也是如此(这应该触发对话框打开)。

这是我触发对话框的代码。此req参数是通过单击按钮的操作传递的。

module.exports.addEmail = (req) => {
    let body = req.body;
    let data = JSON.stringify({
        trigger_id : body.trigger_id,
        url        : resolve(config.MM_ACTION_URL, '/mattermost/dialog'),
        dialog     : {
            title       : 'Email',
            callback_id : 'add_email',
            elements    : [
                {
                    display_name : 'Email',
                    name         : 'email',
                    type         : 'text',
                    subtype      : 'email',
                    placeholder  : 'placeholder@example.com'
                }
            ]
        }
    });
    mmRequest('post', 'actions/dialogs/open', data)
        .then((res) => {
            console.log(res);
        })
        .catch((error) => console.log(error));
};

在服务器端,这是我为我的工作流程添加更多上下文的代码。

app.post('/mattermost/actions', (req, res) => {
    // console.log(req.body);
    let action = req.body.context.action;
    if (action === 'add_email') {
        dialog.addEmail(req);
    }
});

app.post('/mattermost/dialog', (req, res) => {
    console.log(req.body);
    res.sendStatus(200);
});

对最重要的服务器进行 API 调用的函数是

module.exports.mmRequest = (method, url, data = {}) => {
    let c = {
        method  : method,
        baseURL : resolve(config.MATTERMOST_URL, 'api/v4/'),
        url     : url,
        data    : data,
        headers : {
            Authorization : `Bearer ${config.MM_ACCESS_TOKEN}`
        }
    };
    return new Promise((resolve, reject) => {
        Axios(c)
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => reject(error.response));
    });
};

在 中console.log(res),我收到一条状态 OK 消息,但对话框没有打开。我做错了什么?

4

0 回答 0