A folga é uma ferramenta cada vez mais popular para empresas e equipes que precisam se comunicar instantaneamente. Embora possa - em alguns casos - seja considerado uma interrupção diária, também tem um grande potencial de automação, oferecendo dezenas de integrações para manter tudo em um só lugar, e está lentamente substituindo e-mails.
Há muitas maneiras de integrar seus sistemas com folga; A plataforma ainda fornece um bot de marca que permite entregar lembretes ou mensagens em seu espaço de trabalho digital. E para melhorias ainda mais colaboração, experimente estes armazenamento na núvem opções.
Slack oferece várias entidades que poderiam ser consideradas 'bots':
Neste tutorial, estaremos parecendo particularmente em 'Bot Users', como programá-los (confira nosso guia para o Melhores editores de código para facilitar sua vida) e fazê-los se adequarem às suas necessidades. Isso pressupõe que você tenha acesso a um espaço de folga onde você pode adicionar integrações de aplicativos. Se você ainda não estiver parte de um, eles são livres para criar.
No que se segue, construímos um aplicativo Nodejs para postar e responder a mensagens específicas em um canal folgado. Usamos o módulo "Slackbots", que é um invólucro para a API de mensagens em tempo real de folga.
Também interessado em fazer um site? Escolha um brilhante. Construtor de sites e top hospedagem na web. serviço para ir com isso.
Este tutorial pressupõe que você tenha um nó instalado. Se não, faça agora. Então Baixe os ativos você precisará. Nós fornecemos um ponto de partida e estrutura para o tutorial.
Ao longo, fazemos uso de módulos, como 'Slackbots' e 'Nó-Slack-Upload'. Eles podem ser obtidos executando o comando de instalação.
npm install
Estamos usando a integração "Bot User" para folga. Para fazer isso, precisamos obter um token indo para 'https: // & lt; youslackworkspace & gt; .slack.com / apps / a0f7ys25r-bots' e clique em "Adicionar configuração".
Escolha um nome de usuário para o seu bot (podemos substituir isso programaticamente em um estágio posterior) e confirmar.
Convide o bot para o canal desejado.
Ao criar um usuário de bot, você receberá um token no seguinte formato:
xoxb-000000-000000-x0x0xxxxx0xxx0x
Copie o token para o próximo passo.
Fazemos uso de variáveis de ambiente (um arquivo '.env') para evitar codificação dura e revelar tokens e chaves secretas, como o token folgado que geramos, e o nome do canal em seu espaço de trabalho de folga privada.
Vá em frente e preencha o arquivo '.env' com o seu token e o nome do canal ao qual você convidou o usuário do bot.
Slack_token = Xoxb- & lt; youtoken & gt;
Slack_channel = & lt; nome de canal & gt;
Este próximo passo nos leva a 2 arquivos: 'index.js', que teremos uma breve olhada, e 'bin / lib / bot.js', onde a maior parte do nosso desenvolvimento acontece. No arquivo de índice, instanciamos nosso bot dando um nome, que é 'wdmbot'.
Em 'bot.js' controlamos os parâmetros de cada instância com nome, token, etc.
// index.js
const bot = requer ('./ bin / lib / bot'). init
('Wdmbot');
//bot.js.
Const botparams = {
icon_emoji: ': robot_face:',
AS_USER: FALSE.
};
deixe bot;
função initbot (botname) {
bot = novo slackbot ({
Token: process.env.slack_token,
Nome: Botname.
});
}
Dê uma olhada na função 'Sendmessage'. Nós usamos o método 'postto'. Isso irá lidar com a postagem em qualquer tipo de canal, público ou privado. Se você quiser apenas postar em canais privados, poderá usar 'pós-argamassa' em vez (ou 'postTochannel' para um público). Para enviar nossa primeira mensagem, podemos adicionar código em 'initbot'.
Função Initbot (Botname) {
bot = / * veja acima * /
Sendmessage ('Estou aqui!');
}
// Agora executado 'NPM Start'
Você deveria ter notado uma mensagem do WDMBOT aparecer no seu canal. Vale a pena notar que em "botparams", 'as_user' é definido como falso, o que nos permite substituir o nome e a imagem. Se definido como TRUE, ele usará o nome e a imagem que você definirá ao obter o token.
Você pode mudar o bot de emoji para uma imagem como assim:
Const botparams = {
icon_url: 'https://pbs.twimg.com/
Perfil_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSE.
};
A postagem de mensagens é útil, mas para tornar o bot mais interativo, precisamos ser capazes de identificar posts de outros usuários no canal. Vamos ouvir o evento da mensagem e, em seguida, ver o que acontece quando digitamos para o canal. Devemos ver diferentes tipos de mensagens sendo registrados, como 'user_typing' ou 'mensagem'.
Função Initbot (Botname) {
bot = / * veja acima * /
bot.on ('mensagem', dados = & gt; {
console.log (dados);
});
}
Em seguida, queremos responder a mensagens recebidas do tipo 'mensagem', e talvez para uma frase ou palavra-chave específica, para evitar responder a absolutamente tudo. Certificamos de comparar seqüências minúsculas se quisermos combinar uma frase exata. Nós também poderíamos ver se uma mensagem 'inclui ()' uma palavra específica.
bot.on ('mensagem', dados = & gt; {
if (data.type === 'mensagem') {
if (data.text.tolowercase () === 'onde
você está?') {
Sendmessage ('Estou aqui!');
}
}
});
As mensagens enviadas por usuários bot têm várias propriedades, como um subtipo de 'bot_message' e um bot_id. Você pode querer restringir a resposta a apenas mensagens postadas em humanos para evitar loops infinitos de bots respondendo a si mesmos ou se a sua resposta incluir uma das palavras-chave que você está ouvindo.
bot.on ('mensagem', dados = & gt; {
if (data.type === 'mensagem' & amp; e amp; dados.
subtipo! == 'bot_message') {
if (data.text.tolowercase ().
inclui ('olá')) {
Sendmessage ('Olá, eu sou um bot!');
}
}
});
Para dar uma resposta mais personalizada, você pode aproveitar o ID do usuário da mensagem que você está respondendo. A folga converterá automaticamente um ID para o nome de usuário quando incluído nas tags '& lt; @ & gt;'. Identificar quem você está respondendo pode ser útil, especialmente se os membros de vários canais estiverem interagindo com seu bot simultaneamente.
bot.on ('mensagem', dados = & gt; {
if (data.type === 'mensagem' & amp; e amp; dados.
subtipo! == 'bot_message') {
if (data.text.tolowercase ().
inclui ('olá')) {
Sendmessage ('Hello & Lt; @ $ {data.user}
& gt; Eu sou um robô!');
}
}
});
Os bots também podem editar suas respostas. Apenas o seu próprio, no entanto. Então, se você estivesse esperando por um bot digitalizador que corrija suas mensagens automaticamente quando ele passa um erro, isso não é possível com a configuração atual.
Para atualizar a mensagem, definimos uma nova função e uma booleana global que usaremos em nossa demonstração.
Deixe changereply = falso;
Atualização da função (MessageParams) {
bot.updatemessage (MessageParams.channel,
MessageParams.TS, MessageParams.Text,
botparams);
}
Vamos tentar atualizar o texto que o bot nos envia. Nesse caso, em um evento de mensagem, precisamos responder a uma mensagem de bot de entrada, portanto, iremos corresponder a essa condição para a atualização, e também usaremos o registro de data e hora da mensagem original a ser atualizada. Isso é tão folgado pode identificar qual mensagem para atualizar, caso os outros sejam postados no meio.
se (data.type === 'mensagem' & amp; e amp; data.subtype! ==
'bot_message' & amp; & amp; data.text) {
if (data.text.inclui ('atualizar')) {
Sendmessage ('Vou atualizar em 5
segundos ');
changereply = true;
}
}
if (data.type === 'mensagem' & amp; e amp; data.subtype ===
'bot_message' & amp; & amp; challereply) {
changereply = false;
settimeout (() = & gt; {
UpdateMessage ({Channel: Data.Cannel,
TS: Data.TS, texto: 'Eu atualizei'});
}, 5000);
}
As mensagens efêmeras são, como o nome pode sugerir, temporário. Eles também são visíveis apenas para um usuário e podem ser excluídos por eles. Esses tipos de mensagens podem ser úteis como uma dica ou lembrete que não precisa ficar permanentemente.
se (Data.Text.tolowercase (). Inclui ('HR')) {
efemeralmessage ({
Canal: Data.Cannel,
Usuário: Data.User,
Texto: 'Se você precisar contatar HR,
seu email é [email protected]
});
}
// a função que estamos chamando
função efemereralMessage (MessageParams) {
bot.postephemeral (MessageParams.Cannel,
MessageParams.User, MessageParams.Text,
botparams);
}
Métodos diferentes levarão um parâmetro de usuário ligeiramente diferente (ID ou nome, que é diferente do display_name e do Real_Name). No entanto, apenas o ID do usuário está disponível nos eventos da mensagem. Podemos, portanto, implementar uma pesquisa de nome de usuário obtendo todos os usuários e correspondendo ao ID.
ASYNC Função GetUseName (UserID) {
Devolver aguarda bot.getusers ()
.then (dados = & gt; {
Deixe o membro = data.members.find
(usuário = & gt; {
return user.id === userid;
});
Membro de retorno. Nome;
})
.catch (err = & gt; console.log (err));
}
Com a nova pesquisa do usuário, agora podemos enviar mensagens diretas para um usuário, quando as mensagens efêmeras simplesmente não serão. Observe que as mensagens diretas são consideradas um canal novo / diferente, com um ID diferente do canal original. Você também pode implementar uma pesquisa de canal da mesma maneira que o usuário que fizemos anteriormente.
// no evento da mensagem
if (data.text.tolowercase (). Inclui ('bot')) {
senddm ({
Usuário: Data.User,
Texto: "Como posso ajudar?"
});
}
// a função que estamos chamando
Senddm da função assíncrance (MessageParams) {
deixe o usuário = aguardar getusername
(MessageParams.User);
Retornar Bot.PostMessageTayer (usuário, mensagem
Params.text, botparams, (err, dados) = & gt; {
console.log (err)
});
}
Os usuários bot também têm permissões para fazer upload de arquivos e imagens para um canal. Essa funcionalidade não é coberta por "slackbots", portanto, temos que instanciar um novo uploader, como demonstrado abaixo. Também prepare uma pasta 'ativos' na sua raiz do projeto, com algumas imagens nele.
Vamos preparar uma chamada para 'Sendimage ()', definido no próximo passo.
// em initbot ()
Uploader = novo Slackupload (Process.env.
Slack_token);
// no evento da mensagem
if (data.text.inclui ('Image')) {
if (! data.upload) {
/ * Neste caso, não há mensagem
subtipo,
Então, verificamos que não é acionado por um
Mensagem de upload anterior * /
deixe imagem = data.text.split ('') ;
sendimage ('esta é a imagem que você
queria ', imagem);
}
}
Nós enviamos imagens usando o uploader e o módulo do sistema de arquivos (FS). Desde que a mensagem de um usuário esteja no formato "Image & Lt; Imagename.Extension & gt;", e tal arquivo existe na pasta 'Ativos', a imagem será lida e carregada. Se não, enviamos uma mensagem regular (poderia até ser um efêmero).
Função Sendimage (mensagem, imagem) {
uploader.Uploadfile ({
Arquivo: fs.creadstream (path.join
(__dirname, '../../assets/Boary}')),
Mimetype: 'Image / *',
tipo de arquivo: '*',
Título: Imagem,
Cumprimento: Mensagem,
Canais: Canal
}, (err, dados) = & gt; {
if (err) {
sendmessage (desculpe, não consigo encontrar
$ {image} ');
}
});
}
Você pode postar em vários canais com o mesmo usuário bot, desde que seja um membro de cada canal onde você está esperando uma resposta. Vamos criar uma função 'PostToall' e atualizar as variáveis de ambiente para ter nomes de canal como valores separados por vírgulas.
Const Channels = process.env.slack_channel.
dividir(',');
Const Channel = canais ;
Função Posttoall (mensagem) {
canais.Forach (canal = & gt; {
bot.postto (canal, mensagem, botparams);
});
}
Ocasionalmente, você pode querer usar canais para depurar ou responder a eventos de maneira diferente com o mesmo bot em diferentes canais. Cabe a você treinar sua convenção de nomenclatura de canal. Vamos assumir para o exemplo a seguir que Slack_channel = Tutorial WDM-Tutorial, depuração do WDM.
Função Splitmessages (Mensagem, DebugMessage) {
canais.Forach (canal = & gt; {
Const Msg = Channel.Cludes ('debug')
debugmessage: mensagem;
bot.postto (canal, msg, botparams);
});
}
Temos sido respostas de codificação dura diretamente na mensagem. Indo para a frente, para tornar as coisas mais gerenciáveis, você pode querer armazenar gatilhos e respostas, em um formato de banco de dados ou JSON, e alternar entre eles, dependendo das condições atendidas.
// Item de resposta de exemplo
{
Entrada: 'HR',
InputMatch: 'Incluir',
Resposta: 'Se você precisar contatar RH,
seu email é [email protected] ',
Responsetipo: 'efêmero'
}
Existem algumas outras propriedades úteis disponíveis na API Slack. Espero que este tutorial tenha dado uma visão geral do que é possível para todas as suas necessidades de bot. Mais recursos podem ser encontrados lendo o Documentação 'Slackbots' ou o completo Documentação de API Slack. .
Este artigo foi originalmente publicado em questão 289 da revista Creative Web Design Web designer . Comprar edição 289 aqui ou Inscreva-se no web designer aqui .
Artigos relacionados:
Pagina 1 de 2: Como desenhar um cavalo: passo a passo Como desenhar um ca..
A dimensão da Adobe torna uma brisa para configurar cenas complexas (Crédito da imagem: Mike Griggs) A ..
Pagina 1 de 2: Página 1 Página 1 Pági..
Houve inúmeras estruturas móveis de plataforma cruzada ao longo dos anos, com melhorias constantes na experiência e desempenho..
A tipografia sempre desempenhou uma parte importante no arsenal de ferramentas de qualquer designer, como eles selecionam o tipo ..
Você provavelmente já ouviu falar que você deve usar unidades relativas para o tamanho da fonte. Esta é uma boa regra para design web acessível; Se o usuário alterar o tamanho de fonte ..
O procriate rapidamente se tornou meu aplicativo de pintura digital. Graças à portabilidade do iPad Pro. , seu a..
Eu estive fazendo arte de lápis. Desde a minha infância, quando eu carregaria um lápis e papel comigo. Colorir ..