2017-03-14 38 views
8

Udało mi się utworzyć prostą interaktywną aplikację Slack z przyciskami Google Apps Script (GAS).Jak wymienić tylko przyciski (załączniki) tylko w/Slack interaktywne przyciski odpowiedzi

wiem jak zastąpić oryginalną wiadomość w/odpowiedź, ale chciałbym, aby wymienić tylko przyciski, jak wykazano (ale nie jasno wyjaśnione) wiele miejsca w Slack Interactive dokumentacji przycisku:
https://api.slack.com/docs/message-buttons#crafting_your_message

Chciałbym zrobić to, co tutaj zademonstrowałem: https://a.slack-edge.com/dcb1/img/api/message_guidelines/Example_6.gif

Czy to jest aktualizacja oryginalnej wiadomości, zastąpienie oryginalnej wiadomości identycznym tekstem, ale innym załącznikiem, ...?

Mój obecny interaktywne przyciski kod wiadomość wygląda tak:

function sendMsgWithButton() { 

// slack channel url (where to send the message) 
var slackUrl = "https://hooks.slack.com/services/..."; 

// message text 
var messageData = { 
"text": "Here's your interactive buttons message.", 
"attachments": [ 
    { 
     "text": "Can you click the button?", 
     "fallback": "Sorry, no support for buttons.", 
     "callback_id": "ptNotificationButtonResponse", 
     "color": "#3AA3E3", 
     "attachment_type": "default", 
     "actions": [ 
      { 
       "name": "userResponse", 
       "text": "OK", 
       "style": "primary", 
       "type": "button", 
       "value": "ok" 
      } 
        ] 
    } 
       ] 
} 

// format for Slack 
var options = { 
    'method' : 'post', 
    'contentType': 'application/json', 
    // Convert the JavaScript object to a JSON string. 
    'payload' : JSON.stringify(messageData) 
};  

// post to Slack 
UrlFetchApp.fetch(slackUrl, options); 
} 

Moja obecna akcja kod URL teraz wygląda tak:

function doPost() { 

var replyMessage = {"replace_original": true, 
        "response_type": "in_channel", 
        "text": "I see you clicked the button." 
        }; 

return ContentService.createTextOutput(JSON.stringify(replyMessage)).setMimeType(ContentService.MimeType.JSON);  
} 

Zamiast wymieniać całą oryginalną wiadomość, bym chciałbym zamienić tylko przyciski na coś w rodzaju pola wyboru i komunikat potwierdzający, jak pokazano w powyższym gifie.

Dzięki!

+0

Powinna to być luźna funkcja zastępowania przycisków czymś znaczącym – deepdive

Odpowiedz

4

Możesz zastąpić całą wiadomość, a nie tylko jej część.

Istnieją dwie opcje zaktualizować oryginalną wiadomość:

  1. odpowiedzi na wniosek Slack z {"replace_original": true}

  2. Używaj chat.update

Jeśli oryginalna wiadomość nie był typu ephemeral otrzymasz kopię oryginalnej wiadomości jako część ładunku od Slacka wWłaściwość, która może być pomocna w zaktualizowaniu wymiany oryginalnej wiadomości.

Patrz dokumentacja this page w dokumentacji luzu jako odniesienie.

+0

Dzięki za pomoc - idziemy w/opcja 1. – Matt

+0

@Matt Czy możesz udostępnić swój działający kod 'doPost'? Nadal mam ten sam problem, który miałeś, gdy opublikowałeś to pytanie. – baskInEminence

+0

@baskInEmence - Właśnie skończyłem zastępując wszystko do testowania, a potem nigdy go nie zaimplementowałem, więc nie mam żadnego kodu do udostępnienia. – Matt