मैं संदेशों में कुछ कीवर्ड का जवाब देकर तकनीकी सहायता प्रदान करने के लिए एक स्लैकबॉट प्राप्त करने का प्रयास करता हूं। हालांकि, इसकी प्रतिक्रियाएं उस चैनल को अव्यवस्थित कर देती हैं जिसमें वह है। इसलिए, मैं चाहता हूं कि मेरा स्लैकबॉट मूल संदेश के तहत एक थ्रेड में उत्तर दे, जैसा कि मैं स्वयं प्रश्न का उत्तर देते समय करूंगा।

स्लैक दस्तावेज़ीकरण से, मुझे पता है कि किसी संदेश को थ्रेड में उत्तर देना संभव होना चाहिए। मुझे किसी तरह thread_ts का उपयोग करना चाहिए लेकिन मैं इसे काम नहीं कर सकता।


var POST_MESSAGE_ENDPOINT = 'https://slack.com/api/chat.postMessage';
var TEXTS = [
  'Hi there! Maybe I can help you?',
];

  //Reply to  within a thread: 
  //data '{"channel":"CHANNEL-ID", "text":"curl", "thread_ts":"THREAD-TS"}'

function doPost(e){
  var event = JSON.parse(e.postData.contents).event;

  if(event.hasOwnProperty('bot_id')){
    return;
  }else if(event.text.match(/(log.?in)|(inlog)|(logging?)/)){
    postLogin(event, ['login']);
  }else if(event.text.match(/(syncing)|(sync)|(sync$$)/)){
    postSyncing(event, ['syncing']);
  }else if(event.text.match(/(issues?)|(problem)/)){
    postIssueOptions(event, ['issue']);
  }
}

function postLogin(event, keywords){
  var url1 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Runner can not login after changing password>";
  var url2 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Runner forgot password>";
  var url3 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Other login issue>";
  var random_params = Math.floor(Math.random() * TEXTS.length);
  var payload = {token:SLACK_ACCESS_TOKEN, channel:event.channel, text:TEXTS[random_params] + '\n' + url1+'\n'+url2+'\n'+url3};
  UrlFetchApp.fetch(POST_MESSAGE_ENDPOINT, {method: 'post', payload:payload});
}

function postSyncing(event, keywords){
  var url1 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Syncing does not work>";
  var url2 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Yesterday's trips are still showing>";
  var random_params = Math.floor(Math.random() * TEXTS.length);
  var payload = {token:SLACK_ACCESS_TOKEN, channel:event.channel, text:TEXTS[random_params] + '\n' + url1+'\n'+url2};
  UrlFetchApp.fetch(POST_MESSAGE_ENDPOINT, {method: 'post', payload:payload});
}

function postIssueOptions(event, keywords){
  var url1 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Delivery missing in trip>";
  var url2 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Runner App directs Runner back to hub>";
  var url3 = "<https://docs.google.com/document/d/1rcaGjyAMFpo9tG9YAgTpTFlxPZq5luwBlM3gMVCL9eI/edit|Trip assignment does not work>";
  var random_params = Math.floor(Math.random() * TEXTS.length);
  var payload = {token:SLACK_ACCESS_TOKEN, channel:event.channel, text:TEXTS[random_params] + '\n' + url1+'\n'+url2+'\n'+url3};
  UrlFetchApp.fetch(POST_MESSAGE_ENDPOINT, {method: 'post', payload:payload});
}
2
willem evers 29 अक्टूबर 2019, 16:21

1 उत्तर

सबसे बढ़िया उत्तर

किसी मौजूदा संदेश में एक नया थ्रेड खोलने के लिए आपको केवल नया संदेश पोस्ट करना होगा जिसमें thread_ts पैरामीटर उस संदेश के ts मान पर सेट हो जिसका आप जवाब देना चाहते हैं।

थ्रेडिंग की पूरी अवधारणा को इस थोड़े पुराने, लेकिन अभी भी प्रासंगिक थ्रेडिंग कैसे काम करता है, इसका अवलोकन में अच्छी तरह से समझाया गया है। .

1
ZektorH 30 अक्टूबर 2019, 08:31