Il allentato è uno strumento sempre più popolare per le aziende e le squadre che hanno bisogno di comunicare all'istante. Mentre può - in alcuni casi - essere considerato un'interruzione quotidiana, ha anche un grande potenziale di automazione, offrendo dozzine di integrazioni per mantenere tutto in un posto, e sta lentamente sostituendo le e-mail.
Ci sono molti modi per integrare i tuoi sistemi con allentato; La piattaforma fornisce anche un bot di marca che consente di fornire promemoria o messaggi attraverso il tuo spazio di lavoro digitale. E per miglioramenti ancora più collaborazioni, prova questi deposito cloud. opzioni.
Il gioco offre varie entità che potrebbero essere considerate "robot":
In questo tutorial cercheremo in particolare in "Bot Utenti", come programmarli (controlla la nostra guida al I migliori editor di codice Per semplificare la tua vita) e farli in forma le tue esigenze. Questo presuppone di avere accesso a uno spazio allentato dove è possibile aggiungere integrazioni di app. Se non lo stai già parte, sono liberi di creare.
In quanto segue, costruiamo un'app per nodejs per postare e rispondere a particolari messaggi in un canale allentato. Usiamo il modulo 'Slackbots', che è un wrapper per l'API di messaggistica in tempo reale allentabile.
Interessato anche a creare un sito web? Scegli un brillante Builder del sito web e top. web hosting servizio per andare con esso.
Questo tutorial presuppone che tu abbia il nodo installato. Se no, fallo ora. Poi Scarica le risorse avrai bisogno. Vi abbiamo fornito un punto di partenza e un framework per il tutorial.
Durante tutto, facciamo uso di moduli come "Slackbots" e "node-slack-upload". Possono essere ottenuti eseguendo il comando di installazione.
npm install
Stiamo usando l'integrazione "BOT utente" per il gioco. Per fare ciò, dobbiamo ottenere un token andando a 'https: // & lt; youslackworkspace & gt; .slack.com / apps / a0f7ys25R-bots' e fai clic su "Aggiungi configurazione".
Scegli un nome utente per il tuo bot (possiamo ignorare questo programmaticamente in una fase successiva) e confermare.
Invita il bot al canale desiderato.
Creando un utente Bot otterrai un token nel seguente formato:
xoxb-000000-000000-x0x0xxxxx0xxxx0x
Copia il token per il prossimo passo.
Facciamo uso di variabili di ambiente (un file ".env") per evitare cabina rigida e rivelare token e chiavi segreti, come il token allentato che abbiamo generato e il nome del canale nel tuo spazio di lavoro privato.
Vai avanti e compila il file '.env' con il token e il nome del canale a cui hai invitato l'utente Bot.
slack_token = xoxb- & lt; yourtoken & gt;
Slack_channel = & lt; channel-name & gt;
Questo passaggio successivo ci porta a 2 file: 'index.js', che avremo un breve aspetto e 'bin / lib / bot.js', dove avviene la maggior parte del nostro sviluppo. Nel file indice, istanziaremo il nostro bot dandolo un nome, che è "WDMBot".
In 'Bot.js' controlliamo i parametri di ogni istanza con nome, token, ecc.
// index.js
Const Bot = Richiedere ('./ bin / lib / bot'). init
('Wdmbot');
//bot.js.
Const BotParams = {
icon_emoji: ': robot_face:',
AS_USER: FALSE.
};;
Lascia che Bot;
Funzione InitBot (BotName) {
Bot = nuovo Slackbot ({
Token: process.env.slack_token,
Nome: BotName.
}););
}
Dai un'occhiata alla funzione "SendMessage". Usiamo il metodo 'Pusto'. Ciò gestirà la pubblicazione a qualsiasi tipo di canale, pubblico o privato. Se vuoi solo pubblicare i canali privati è possibile utilizzare invece "Posttocroup" (o "Posttochannel" per uno pubblico). Per inviare il nostro primo messaggio, possiamo aggiungere il codice in 'initbot'.
Funzione InitBot (BotName) {
Bot = / * Vedi sopra * /
sendMessage ('I'm qui!');
}
// Ora esegui 'NPM START'
Avresti dovuto notare che un messaggio da WDMBot appaiono nel tuo canale. Vale la pena notare che in "BotParams", "As_User" è impostato su FALSE, il che ci consente di ignorare il nome e l'immagine. Se impostato su true, utilizzerà il nome e l'immagine che hai impostato quando si ottiene il token.
Potresti cambiare il bot emoji su un'immagine come così:
Const BotParams = {
icon_url: 'https://pbs.twimg.com/
Profilo_Immages / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSE.
};
Pubblicazione dei messaggi è utile, ma per rendere il bot più interattivo, dobbiamo essere in grado di identificare i post da altri utenti nel canale. Ascoltiamo l'evento dei messaggi e poi vediamo cosa succede quando digitiamo al canale. Dovremmo vedere diversi tipi di messaggi registrati, come "user_typing" o "messaggio".
Funzione InitBot (BotName) {
Bot = / * Vedi sopra * /
Bot.on ('Message', Data = & GT; {
console.log (dati);
}););
}
Successivamente, vogliamo rispondere ai messaggi in arrivo del tipo 'Messaggio "e forse a una frase o parola chiave specifica, per evitare di rispondere ad Assolutamente tutto. Assicurati di confrontare le stringhe minuscole se vogliamo abbinare una frase esatta. Potremmo anche vedere se un messaggio 'include ()' una parola particolare.
Bot.on ('Message', Data = & GT; {
IF (DATA.TYPE === 'Messaggio') {
se (data.text.tolowercase () === 'dove
tu sei?') {
sendMessage ('I'm qui!');
}
}
});
I messaggi inviati dagli utenti Bot hanno varie proprietà come un sottotipo di "Bot_Message" e un Bot_ID. Potresti voler limitare la risposta a solo messaggi postati umani per evitare anelli infiniti dei robot che rispondono a se stessi o l'uno dell'altro, se la loro risposta include una delle parole chiave che stai ascoltando.
Bot.on ('Message', Data = & GT; {
IF (DATA.TYPE === 'Messaggio' & amp; & amp; Dati.
sottotipo! == 'Bot_Message') {
se (data.text.tolowercase ().
include ('hello')) {
sendMessage ('ciao, sono un bot!');
}
}
});
Per dare una risposta più personalizzata, è possibile sfruttare l'ID utente del messaggio a cui stai rispondendo. Lento convertirà automaticamente un ID sul nome utente se racchiuso nei tag '& lt; @ & gt;'. Identificare chi stai rispondendo a può essere utile, soprattutto se i membri di più canali si interagiscono con il tuo bot contemporaneamente.
Bot.on ('Message', Data = & GT; {
IF (DATA.TYPE === 'Messaggio' & amp; & amp; Dati.
sottotipo! == 'Bot_Message') {
se (data.text.tolowercase ().
include ('hello')) {
sendMessage ('hello & lt; @ $ {data.User}
& GT; Sono un bot! ');
}
}
});
I robot possono anche modificare le loro risposte. Solo il loro, però. Quindi, se speravi in un bot di spot da tipografia che avrebbe corretto automaticamente i tuoi messaggi quando spota un errore, non è possibile con la configurazione corrente.
Per aggiornare il messaggio, definiamo una nuova funzione e un booleano globale che utilizzeremo nella nostra demo.
Let Changereply = False;
Funzione UpdateMessage (MessageParams) {
Bot.UpdateMessage (MessageParams.Channel,
messageparams.ts, messageparams.text,
BotParams);
}
Proviamo ad aggiornare il testo che il bot ci invia. In questo caso, su un evento messaggio, dobbiamo rispondere a un messaggio BOT in arrivo, quindi corrisponderemo a tale condizione per l'aggiornamento, e utilizziamo anche il timestamp del messaggio originale da aggiornare. Questo è così allentato può identificare quale messaggio aggiorna, nel caso in cui altri vengano pubblicati intermedi.
IF (DATA.TYPE === 'Messaggio' & amp; & amp; data.subtype! ==
'Bot_Message' & AMP; & AMP; data.text) {
se (data.text.includes ('update')) {
sendMessage ('Aggiornerò in 5
secondi ');
changereply = true;
}
}
if (data.type === 'Message' & amp; & amp; data.subtype ===
'Bot_Message' & AMP; & AMP; Changereply) {
Changereply = falso;
Settimimeout (() = & GT; {
updatemessage ({canale: data.channel,
TS: DATA.TS, testo: 'Ho aggiornato'});
}, 5000);
}
I messaggi effimeri sono, poiché il nome potrebbe suggerire, temporaneo. Sono anche visibili solo a un utente e possono essere cancellati da loro. Questi tipi di messaggi potrebbero essere utili come punta o promemoria che non è necessario rimanere in modo permanente.
IF (DATA.Text.TOLOWASCASE (). Include ('HR')) {
EfemeralMessage ({
Canale: dati.Channel,
Utente: data.User,
Testo: 'Se hai bisogno di contattare HR,
La loro email è [email protected] '
}););
}
// La funzione che stiamo chiamando
Funzione EfemeralMessage (MessageParams) {
Bot.PostePemelar (MessageParams.Channel,
messageParams.User, MessageParams.Text,
BotParams);
}
Diversi metodi prenderanno un parametro utente leggermente diverso (ID o nome, che è diverso dal display_name e real_name). Tuttavia, solo l'ID utente è disponibile su eventi dei messaggi. Pertanto possiamo implementare una ricerca del nome utente ottenendo tutti gli utenti e corrispondano all'ID.
Async Function GetUserName (userid) {
Torna in attesa di bot.getSers ()
.then (data = & gt; {
Let Member = data.members.find
(utente = & GT; {
return user.id === userid;
}););
return member.name;
})
.CATCH (ERR = & GT; CONSOLE.LOG (ERR));
}
Con il nuovo ricerca utente, ora possiamo inviare messaggi diretti a un utente, quando i messaggi effimeri non lo fanno. Si noti che i messaggi diretti sono considerati un canale nuovo / diverso, con un ID diverso rispetto al canale originale. Potresti anche implementare una ricerca del canale allo stesso modo dell'utente che abbiamo fatto in precedenza.
// Nell'evento dei messaggi
se (data.text.tolowercase (). Include ('Bot')) {
senddm ({
Utente: data.User,
Testo: "Come posso aiutare? '
}););
}
// La funzione che stiamo chiamando
Async Function Senddm (MessageParams) {
Lascia che l'utente = attendi GetUserName
(messageParams.User);
ritorno bot.postmessagetouser (utente, messaggio
Params.text, botsparams, (err, dati) = & gt; {
console.log (err)
}););
}
Gli utenti Bot hanno anche le autorizzazioni per caricare file e immagini su un canale. Questa funzionalità non è coperta da "Slackbots" però, quindi dobbiamo istanziare un nuovo uploader, come dimostrato di seguito. Prepara anche una cartella 'Asset' alla root del progetto, con alcune immagini in esso.
Prepariamo una chiamata a "SendImage ()", definita nel prossimo passo.
// in initbot ()
uploader = nuovo slackupload (process.env.
Slack_token);
// Nell'evento del messaggio
se (data.text.includes ('immagine')) {
Se (! data.upload) {
/ * In questo caso, non c'è messaggio
sottotipo,
Quindi controlliamo che non è innescato da a
Messaggio di caricamento precedente * /
Sia l'immagine = data.text.split ('') ;
SendImage ('questa è l'immagine che tu
voleva ', immagine);
}
}
Carichiamo le immagini utilizzando il uploader e il modulo FileSystem (FS). A condizione che il messaggio di un utente sia nel formato "Image & Lt; Imagename.extension & GT;", e tale file esiste nella cartella 'Asset ", l'immagine verrà letta e caricata. In caso contrario, inviamo un messaggio normale (potrebbe anche essere un effimero).
funzione sendimage (messaggio, immagine) {
uploader.uploadfile ({
File: fs.creativeadeam (percorso.join
(__dirname, '../../assets/$оimage}'))
mimetype: 'immagine / *',
tipo di file: '*',
Titolo: Immagine,
Inizia: messaggio,
Canali: canale
}, (err, dati) = & gt; {
Se (ERR) {
sendMessage ('Scusa, non riesco a trovare
$ {immagine} ');
}
}););
}
Puoi pubblicare più canali con lo stesso utente Bot, purché sia membro di ciascun canale in cui ti aspetti una risposta. Creiamo una funzione "PostToAll" e aggiorniamo le variabili di ambiente per avere nomi dei canali come valori separati da virgola.
CANALI CONST = process.env.slack_channel.
Diviso(',');
CANALE CONST = Canali ;
Function PostTorall (messaggio) {
canali.Foceach (canale = & GT; {
Bot.Postto (canale, messaggio, botparams);
}););
}
Occasionalmente, potresti voler utilizzare i canali per il debug o rispondere agli eventi in modo diverso con lo stesso bot in diversi canali. Spetta a te allenarti la tua convenzione di denominazione del canale. Assumeremo per il seguente esempio che slack_channel = wdm-tutorial, wdm-tutorial-debug.
Funzione SplitMessaggi (Messaggio, DebugMessage) {
canali.Foceach (canale = & GT; {
Const Msg = Channel.includes ('Debug')
? DebugMessage: messaggio;
Bot.Postto (canale, MSG, BotParams);
}););
}
Siamo state le risposte di codifica rigida direttamente nel messaggio. Andando avanti, per rendere le cose più gestibili, potresti voler memorizzare trigger e risposte, sia in un database o in formato JSON e passare da loro a seconda delle condizioni soddisfatte.
// Esempio di elemento di risposta
{
INPUT: 'HR',
InputMatch: 'includi',
Risposta: "Se hai bisogno di contattare HR,
la loro email è [email protected] ',
Responsabile: 'Efemeral'
}
Ci sono alcune altre proprietà utili disponibili nell'API allentabile. Speriamo che questo tutorial avrà dato una panoramica di ciò che è possibile per tutte le esigenze dei tuoi bot. Ulteriori risorse possono essere trovate leggendo il Documentazione 'Slackbots' , o il pieno Documentazione API allentata .
Questo articolo è stato originariamente pubblicato in questione 289 della rivista creativa di web design Web designer . Comprare il problema 289 qui o Iscriviti al web designer qui .
Articoli Correlati:
(Immagine di credito: Glen Southern) Zbrush retopology, o come retopoliare un modello in generale, è una cosa che tu..
In questo tutorial, ti mostreremo come creare un effetto di testo. Effetti speciali e animazioni possono aiutare i siti Web che si distinguono, creando un impatto immediato sull'utente prima ..
Questa guida passo-passo è impostata per rivelare come procedere alla creazione di nuvole realistiche. Questo tutorial è l'idea..
In questo workshop, ti mostreremo come dipingere un cavaliere usando Photoshop. , così come la pittura con i medi..
Leader del workshop Vertex. Glen Southern. Condivide i suoi migliori consigli per aiutart..
Vista mozzafiato, skyline mozzafiato e bellissimi paesi urbani fanno grandi fotografie, ma possono essere piuttosto scoraggianti ..
Un'immagine vale più di mille parole e un video vale un milione. Il video può trasmettere più informazioni più velocemente della stampa o delle immagini statiche. Può rendere diversament..
Sculptare una creatura 3D davvero dettagliata può richiedere giorni - ma è ancora incredibile quanto puoi ottenere in un'ora. Questo modello di uno ibex nubiano è stato scolpito da ..