无法从Google App脚本打开Slack模式

问题描述

我正在尝试从GAS上单击按钮以打开松弛模式。目前,我正在发送具有此功能的交互式按钮:

function Send(){
  
  var url = "my slack url here"
  var payload = 
    {
      "text": "Here's your interactive buttons message.","blocks": [
        {
            "type": "actions","elements": [
                {
                    "type": "button","text": {
                        "type": "plain_text","text": "Click Me","emoji": true
                    },"value": "id_btn","action_id": "id_btn"
                }
            ]
        }
    ]
    }

var options = {
    "method": "post","contentType": "application/json","payload": JSON.stringify(payload)
  };

UrlFetchApp.fetch(url,options); 
  }

但是,当我与按钮交互时,什么也没有发生。我当前的Get / Post方法如下:

function doGet(e){
return ContentService.createtextoutput(""); 
}

function doPost(e) {

  if (typeof e !== 'undefined') { 

    // Extract the relevant data
    var parameter = e.parameter;
    var date = new Date();
    var payload = JSON.parse(parameter.payload)

    var trigger_id = payload.trigger_id;
    var slackUrl = "https://slack.com/api/views.open";
    var myToken = "Token I got after installing app to slack"

var payload_upd ={
    "trigger_id": trigger_id,"type": "modal","view":{
    "title": {
        "type": "plain_text","text": "Gratitude Box","emoji": true
    },"submit": {
        "type": "plain_text","text": "Submit","close": {
        "type": "plain_text","text": "Cancel","blocks": [
        {
            "type": "input","block_id": "my_block","element": {
                "type": "plain_text_input","action_id": "my_action"
            },"label": {
                "type": "plain_text","text": "Say something nice!","emoji": true
            }
        }
    ]
    }
}

// Send options   
    var options_upd = {
    "headers": {"Authorization": myToken},"method": "post","payload": JSON.stringify(payload_upd),}; 
  
    UrlFetchApp.fetch(slackUrl,options_upd);
  }  
  
}

我尝试了多种方法,可以在我的有效载荷和选项中组合trigger_id和令牌,但是找不到可行的方法。任何帮助将不胜感激,谢谢。

解决方法

好像您的有效载荷无效,因为"type": "modal"应该是view的一部分。试试这个有效载荷:

var payload_upd = {
  "trigger_id": trigger_id,"view": {
    "type": "modal","title": {
      "type": "plain_text","text": "Gratitude Box","emoji": true
    },"submit": {
      "type": "plain_text","text": "Submit","close": {
      "type": "plain_text","text": "Cancel","blocks": [
      {
        "type": "input","block_id": "my_block","element": {
          "type": "plain_text_input","action_id": "my_action"
        },"label": {
          "type": "plain_text","text": "Say something nice!","emoji": true
        }
      }
    ]
  }
};

此外,请确保在“授权”标头中指定“承载者”。

var options_upd = {
  "headers": {"Authorization": "Bearer " + myToken},"method": "post","contentType": "application/json","payload": JSON.stringify(payload_upd),};