не могу открыть диалог Slack через скрипты приложений Google - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь использовать скрипты приложений Google и расслабиться, чтобы автоматизировать свою работу. И я хочу ввести текст в диалоговом окне Slack, чтобы изменить мою электронную таблицу Google с помощью скриптов приложений Google. Однако с помощью приведенного ниже кода я не могу открыть диалог через Slack-API's Slash command. У моего кода есть проблемы?

function doPost(e){
var params = e.parameter;
var token = params.token;
var text = params.text;
var trigger_id = params.trigger_id;
var slackUrl = ["https://slack.com/api/dialog.open"];
if (token == "[token from slack]"){
    var dialog = {
  "token": "[OAuth Token]",
  "trigger_id":trigger_id,
  "dialog":{
  "callback_id": "ryde-46e2b0",
    "title": "Request a Ride",
      "submit_label": "Request",
        "elements": [
          {
            "type": "text",
            "label": "Pickup Location",
            "name": "loc_origin"
          },
          {
            "type": "text",
            "label": "Dropoff Location",
            "name": "loc_destination"
          }
        ]
}
};
var options = {
  'method' : 'POST',
  'contentType': 'application/json',
  'payload' : dialog}; 
UrlFetchApp.fetch(slackUrl, options);
}  
else{
 var res = {"text":"failed token verification!"} 
return          ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
 }}

1 Ответ

0 голосов
/ 29 июня 2018

Как насчет этой модификации?

Очки модификации:

  • Используйте строку для "url" из "UrlFetchApp.fetch (url, params)".
  • Используйте JSON.stringify() для dialog объекта dialog.
  • 'contentType': 'application/json', не требуется.

Модифицированный скрипт:

function doPost(e) {
  var params = e.parameter;
  var token = params.token;
  var text = params.text;
  var trigger_id = params.trigger_id;
  var slackUrl = "https://slack.com/api/dialog.open";
  if (token == "[token from slack]"){ // Please input this.
    var dialog = {
      "token": "[OAuth Token]", // Please input this.
      "trigger_id": trigger_id,
      "dialog": JSON.stringify({
        "callback_id": "ryde-46e2b0",
        "title": "Request a Ride",
        "submit_label": "Request",
        "elements": [
          {
            "type": "text",
            "label": "Pickup Location",
            "name": "loc_origin"
          },
          {
            "type": "text",
            "label": "Dropoff Location",
            "name": "loc_destination"
          }
        ]
      })
    }
    var options = {
      'method' : 'post',
      'payload' : dialog,
    }; 
    UrlFetchApp.fetch(slackUrl, options);
  }  
  else{
    var res = {"text":"failed token verification!"} 
    return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
  }
  return ContentService.createTextOutput(); // Important
}

Примечание:

Если в представлении диалога нет исключений, ваше приложение должно ответить 200 OK с пустым телом. Это завершит диалог.

  • Когда он использует диалог, он возвращает пустое тело, используя ContentService.createTextOutput(), как указано выше, потому что код статуса не может быть изменен скриптом Google Apps. Когда пустое тело не возвращается, возникает ошибка.
  • Этот модифицированный скрипт предполагает, что ваши настройки для использования диалога Slack уже выполнены.
  • Если вы изменили свой сценарий, пожалуйста, повторно разверните Веб-приложения в качестве новой версии. При этом скрипт последней версии отражается в веб-приложениях.

Рекомендации:

В моей среде я подтвердил, что этот модифицированный скрипт работает. Но если это не сработало, извините.

...