Wenn man gerade erst ein einfaches Slash-Command für Slack gebaut hat, lässt es sich mit überschaubaren Aufwand auch für Rocket.Chat verwenden. Die folgende Schritte führen zum Ziel:
- Unter „Administration“ eine neue „Integration“ anlegen.
- Als Event Trigger: „Message Sent“
- Als Kanal: „all_public_channels,all_private_groups,all_direct_messages“
- Als Trigger-Wort den Namen des alten Slash-Commands eintragen. Hinweis: Kommandos in Rocket.Chat beginnen nicht mit einem
/
. - Als URL gibt man die alte Slash-Command-URL an.
- Bei „Verschicken als“ trägt man sinnigerweise einen Nutzer an, den man extra als Bot einträgt. Besonders schlau ist es, wenn Nutzernamen und Slash-Command-Name übereinstimmen. So kann man statt
/command
an@command
schreiben, und den Bot als Gesprächspartner verwenden. - Beim Script gibt man das folgende Script ein:
class Script {
prepare_outgoing_request({ request }) {
// request.params {object}
// request.method {string}
// request.url {string}
// request.auth {string}
// request.headers {object}
// request.data.token {string}
// request.data.channel_id {string}
// request.data.channel_name {string}
// request.data.timestamp {date}
// request.data.user_id {string}
// request.data.user_name {string}
// request.data.text {string}
// request.data.trigger_word {string}
if (new RegExp('^[\\/\\+@]?(' + request.data.trigger_word + ')(\\s|$)').test(request.data.text)) {
request.params2 = Object.keys(request.data).map(function (key) {
return key + '=' + encodeURIComponent(request.data[key]);
});
request.params2.push('text=' + encodeURIComponent(request.data.text.replace(/^\S+(\s|$)/, '')));
request.params2.push('command=' + encodeURIComponent('/' + request.data.trigger_word));
request.params2.push('client=' + encodeURIComponent('rocket'));
request.url += '?' + request.params2.join('&');
return request;
}
}
process_outgoing_response({ request, response }) {
// response.error {object}
// response.status_code {integer}
// response.content {object}
// response.content_raw {string/object}
// response.headers {object}
return response;
}
}
Mit diesem Script werden die Request-Parameter soweit umgeformt, dass sie den von Slack bekannten Parametern entsprechen. Die Response wiederum ist im Groben und Ganzen kompatibel mit Rocket.Chat.