느슨한 것은 즉시 의사 소통 해야하는 기업 및 팀을위한 인기가 많은 도구입니다. 어떤 경우에는 일일 중단으로 간주되는 반면, 그것은 또한 모든 것을 한 곳에서 유지하기 위해 수십 가지의 통합을 제공하는 훌륭한 자동화 잠재력을 가지고 있으며 천천히 이메일을 대체합니다.
시스템을 여유로 통합하는 여러 가지 방법이 있습니다. 이 플랫폼은 디지털 작업 공간에서 미리 알림 또는 메시지를 전달할 수있는 브랜드의 봇을 제공합니다. 그리고 더 많은 협업 향상을 위해 이들을 시도하십시오 클라우드 스토리지 옵션.
느슨한 것은 '봇'으로 간주 될 수있는 다양한 엔티티를 제공합니다.
이 튜토리얼에서는 특히 'Bot Users'에서 프로그래밍하는 방법 (가이드를 확인하십시오) 최고의 코드 편집자 인생을 쉽게하기 위해) 당신의 필요에 맞게하십시오. 이 전제 사항은 앱 통합을 추가 할 수있는 여유 공간에 액세스 할 수 있습니다. 당신이 아직 하나의 일부가 아니라면, 그들은 자유롭게 만들 수 있습니다.
다음과 같은 경우, 우리는 노드 앱을 구축하여 수확 한 채널의 특정 메시지에 특정 메시지에 응답합니다. 우리는 Slackbots '모듈을 사용합니다.이 모듈은 Slack Real-Time Messaging API를위한 래퍼입니다.
웹 사이트를 만들기에 관심이 있으십니까? 훌륭한 것을 선택하십시오 웹 사이트 빌더 그리고 톱 웹 호스팅 그것으로가는 서비스.
이 자습서에서는 노드가 설치되어있는 것으로 가정합니다. 그렇지 않다면 지금하십시오. 그때 자산을 다운로드하십시오 너는 필요할거야. 우리는 자습서를위한 출발점과 프레임 워크를 제공했습니다.
전반에 걸쳐 'Slackbots'및 'Node-Slack-Upload'와 같은 모듈을 사용합니다. 설치 명령을 실행하여 얻을 수 있습니다.
npm install
우리는 여유를위한 "봇 사용자"통합을 사용하고 있습니다. 이렇게하려면 'https : // & lt; youslackworkspace & gt; .slack.com / apps / a0f7ys25r-bots'로 가서 "구성 추가"를 클릭하여 토큰을 가져와야합니다.
봇의 사용자 이름을 선택하십시오 (나중에 프로그래밍 방식 으로이 작업을 무시할 수 있음)을 확인하고 확인하십시오.
봇을 원하는 채널로 초대하십시오.
봇 사용자를 만들면 다음 형식으로 토큰이 표시됩니다.
XOXB-000000-000000-x0x0xxxxx0xxxxxx.x.
다음 단계에 대한 토큰을 복사하십시오.
우리는 하드 코딩을 피하고 우리가 생성 한 슬랙 토큰과 비공개 슬랙 작업 공간에서 채널 이름을 나타내는 비밀 토큰과 키를 드러내는 환경 변수 ( '.en'파일)를 사용합니다.
계속해서 '.env'파일을 토큰으로 채우고 봇 사용자를 초대 한 채널의 이름을 입력하십시오.
slack_token = xoxb- & lt; yourToken & gt;
SLAX_CHANNEL = & lt; 채널 이름 & gt;
이 다음 단계는 'index.js', 대부분의 개발이 일어나는 간단한 봐, 'bin / lib / bot.js'를 보유하고 있습니다. 인덱스 파일에서 우리는 'wdmbot'인 이름을 지정하여 봇을 인스턴스화합니다.
'bot.js'에서는 이름, 토큰 등의 각 인스턴스의 매개 변수를 제어합니다.
// index.js
const bot = require ( './ bin / lib / bot'). init
( 'WDMBOT');
//bot.js.
const botparams = {
icon_emoji : ': robot_face :',
as_user : 거짓
};
봇;
기능 initbot (botname) {
Bot = 새로운 Slackbot ({
토큰 : process.env.slack_token,
이름 : BotName.
});
}
'sendmessage'함수를 살펴보십시오. 우리는 'Postto'메서드를 사용합니다. 이렇게하면 모든 유형의 채널, 공개 또는 비공개에 게시됩니다. 개인 채널에만 게시하고 싶다면 'Posttogroup'을 대신 사용할 수있는 경우 (또는 공용 1의 경우 'Posttochannel')를 사용할 수 있습니다. 첫 번째 메시지를 보내려면 'initbot'에 코드를 추가 할 수 있습니다.
함수 초기 (BotName) {
bot = / * 위보기 * /
SendMessage ( '나는 여기에!');
}
// 이제 'npm start'를 실행합니다
채널에 WDMBOT의 메시지가 나타납니다. 'botparams'에서 'as_user'가 false로 설정되어 있으므로 이름과 이미지를 무시할 수 있습니다. true로 설정하면 토큰을 가져올 때 설정 한 이름과 이미지를 사용합니다.
봇 이모티콘을 이미지로 변경할 수 있습니다 :
const botparams = {
icon_url : 'https://pbs.twimg.com/
profile_images / 976112552081010688 /
wllqvj8d_400x400.jpg ',
as_user : 거짓
};
게시 메시지는 유용하지만 봇을 더 많은 대화식으로 만들려면 채널의 다른 사용자의 게시물을 식별 할 수 있어야합니다. 메시지 이벤트를 듣고 채널에 입력 할 때 일어나는 일을 확인해 봅시다. 'user_typing'또는 '메시지'와 같은 다른 메시지 유형이 기록되는 메시지 유형을 확인해야합니다.
함수 초기 (BotName) {
bot = / * 위보기 * /
bot.on ( '메시지', 데이터 = & gt; {
console.log (데이터);
});
}
다음으로, 우리는 '메시지'메시지 '의 수신 메시지와 특정 구 또는 키워드에 회신하여 절대적으로 모든 것을 회신하지 않도록 요청합니다. 정확한 구를 일치시키고 싶으면 소문자 문자열을 비교해보십시오. 우리는 '메시지가 포함 된 ()'특정 단어를 포함하는지 확인할 수 있습니다.
bot.on ( '메시지', 데이터 = & gt; {
if (data.type === '메시지') {
if (data.text.tolowercase () === '어디로
너야? ') {
SendMessage ( '나는 여기에!');
}
}
});
Bot 사용자가 보낸 메시지에는 'bot_message'와 bot_id의 하위 유형과 같은 다양한 속성이 있습니다. 응답이 듣는 키워드 중 하나가 포함되어 있으면 인간이 봇의 무한 루프를 피하기 위해 인간이 봇의 무한한 루프를 피하기 위해 인간이 게시 한 메시지 만 방지하기 위해 답장을 제한하고 싶을 수도 있습니다.
bot.on ( '메시지', 데이터 = & gt; {
if (data.type === '메시지'& amp; 데이터.
subtype! == 'bot_message') {
if (data.text.tolowercase ().
포함 ( 'Hello')) {
SendMessage ( 'Hello, 나는 봇!');
}
}
});
더 개인화 된 응답을 제공하기 위해 답장하는 메시지의 사용자 ID를 활용할 수 있습니다. 느슨한 것은 태그 '@ @ @ @ int;' 특히 여러 채널 구성원이 동시에 상호 작용하는 경우 특히 여러 채널 구성원이 동시에 상호 작용하는 경우 유용 할 수있는 사람을 확인합니다.
bot.on ( '메시지', 데이터 = & gt; {
if (data.type === '메시지'& amp; 데이터.
subtype! == 'bot_message') {
if (data.text.tolowercase ().
포함 ( 'Hello')) {
SendMessage ( 'hello & lt; @ $ {data.user}
& gt; 나는 봇이야! ');
}
}
});
봇은 응답을 편집 할 수 있습니다. 그래도 오직. 따라서 실수를 거쳐 메시지를 자동으로 수정할 수있는 오타 스포팅 봇을 원한다면 현재 설정에서는 불가능합니다.
메시지를 업데이트하려면 새로운 기능을 정의하고 데모에서 사용할 전역 부울을 정의합니다.
ChangeReply = False;
updateMessage 함수 (messageParams) {
Bot.UpdateMessage (messageParams.Channel,
messageParams.ts, messageParams.text,
Botparams);
}
봇이 우리를 보내는 텍스트를 업데이트 해보십시오. 이 경우 메시지 이벤트에서 들어오는 봇 메시지에 회신해야하므로 업데이트의 조건을 일치 시켜서 업데이트 할 원본 메시지의 시간 소인도 사용합니다. 그래서 느슨해지는 것은 다른 사람이 게시 될 경우 업데이트 할 메시지를 식별 할 수 있습니다.
if (data.type === '메시지'& amp; & amp; data.subtype! == 'bot_message'& amp; & amp; data.text) { if (data.text.includes ( '업데이트')) { SendMessage ( '5에서 업데이트 드리겠습니다 초 '); ChangeReply = true; } } if (data.type === '메시지'& amp; & amp; data.subtype === 'bot_message'& amp; & amp; ChangeReply) { ChangeReply = 거짓; setTimeout (() { UpdateMessage ({Channel : Data.Channel, TS : data.ts, text : 'i 업데이트 된'}); }, 5000); }
임시 메시지는 이름이 제안 할 수 있으므로 일시적입니다. 또한 한 사용자에게만 볼 수 있으며 삭제할 수 있습니다. 이러한 유형의 메시지는 영구적으로 머무를 필요가없는 팁 또는 알림으로 유용 할 수 있습니다.
if (data.text.tolowerCase (). 포함 ( 'HR')) { ephemeralmessage ({ 채널 : data.channel, 사용자 : data.user, 텍스트 : 'HR에 접촉 해야하는 경우, 그들의 이메일은 [email protected]입니다. ' }); } // 우리가 호출하는 기능 기능 ephemeralmessage (messageParams) { bot.postephemeral (messageparams.channel, messageParams.User, messageParams.text, Botparams); }다른 방법은 display_name 및 real_name과는 다른 ID 또는 이름 중 하나로 다릅니다. 그러나 사용자 ID 만 메시지 이벤트에서 사용할 수 있습니다. 따라서 모든 사용자를 가져 와서 ID와 일치시켜 사용자 이름 조회를 구현할 수 있습니다.
Async 함수 getUsername (UserID) {
봇을 반환하십시오 .GetUsers ()
.then (데이터 = & gt; {
멤버 = data.members.find.find.
(사용자 = & gt; {
user.id === userid를 반환합니다.
});
return member.name;
})
.catch (err = & gt; console.log (오류));
}
새 사용자 조회를 사용하면 ephemeral 메시지가하지 않을 때 사용자에게 직접 메시지를 보낼 수 있습니다. 직접 메시지는 원래 채널보다 다른 ID가있는 새 / 다른 채널로 간주됩니다. 이전에 수행 한 사용자와 같은 방식으로 채널 조회를 구현할 수도 있습니다.
// 메시지 이벤트에서
if (data.text.tolowercase (). ( 'bot')) {
senddm ({
사용자 : data.user,
텍스트 : '어떻게 도와 드릴까요?'
});
}
// 우리가 호출하는 기능
비동기 기능 senddm (messageParams) {
사용자 = GetUsername을 기다리십시오
(messageParams.user);
Bot.PostMessageTous (사용자, 메시지)를 반환합니다
params.text, botparams, (Err, Data) = & gt; {
console.log (err)
});
}
Bot 사용자는 또한 채널에 파일과 이미지를 업로드 할 수있는 권한이 있습니다. 이 기능은 'Slackbots'가 적용되지 않으므로 아래에 설명 된 바와 같이 새 업 로더를 인스턴스화해야합니다. 또한 프로젝트 루트에서 '자산'폴더를 준비하십시오. 일부 이미지가 있습니다.
다음 단계에서 정의 된 'sendImage ()'호출을 준비합시다.
// initbot ()
업 로더 = 새 슬랙 플로로드 (Process.Env.
slack_token);
// 메시지 이벤트에서
if (data.text.includes ( '이미지')) {
if (! data.upload) {
/ *이 경우 메시지가 없습니다.
하위 유형,
그래서 우리는 그것이
이전 업로드 메시지 * /
image = data.text.split ( '') ;
SendImage ( '이것은 당신의 이미지입니다
원한 ', 이미지);
}
}
업 로더와 파일 시스템 (FS) 모듈을 사용하여 이미지를 업로드합니다. 사용자의 메시지가 "Image & lt; ImageName.Extension & gt"형식이고 '자산'폴더에 이러한 파일이 존재하며 이미지가 읽고 업로드됩니다. 그렇지 않은 경우, 우리는 일반적인 메시지를 되돌립니다 (심지어 임시 일 수도 있습니다).
기능 SendImage (메시지, 이미지) {
uploader.uploadfile ({
파일 : FS.CreaterEADStream (Path.Join.
(__dirname, '../../Assets/$ {image}')),
mimetype : '이미지 / *',
FileType : '*',
제목 : 이미지,
초기화 : 메시지,
채널 : 채널
}, (Err, Data) = & gt; {
if (err) {
SendMessage ( '미안해, 찾을 수 없어
$ {image} ');
}
});
}
응답을 기대하는 각 채널의 구성원 인 한 동일한 봇 사용자가있는 여러 채널에 게시 할 수 있습니다. 'posttoall'함수를 만들고 환경 변수를 쉼표로 구분 된 값으로 채널 이름을 갖도록하십시오.
const 채널 = process.env.slack_channel.
스플릿(',');
const 채널 = 채널 ;
함수 posttoall (메시지) {
channels.foreach (채널 = & gt; {
bot.postto (채널, 메시지, botparams);
});
}
때로는 채널을 사용하여 디버깅을 위해 사용하거나 다른 채널의 동일한 봇과 다르게 이벤트에 응답 할 수 있습니다. 채널 이름 지정 규칙을 운동하는 것은 당신에게 달려 있습니다. 우리는 Slack_Channel = WDM-Tutorial, WDM-Tutorial-Debug에서 다음 예제를 가정합니다.
함수 SplitMessages (Message, DebugMessage) {
channels.foreach (채널 = & gt; {
const msg = channel.inCludes ( '디버그')
? DebugMessage : 메시지;
bot.postto (채널, msg, botparams);
});
}
우리는 메시지에 직접 부호화 된 응답을 해결했습니다. 앞으로, 일을 더 관리 할 수있게하려면 데이터베이스 또는 JSON 형식으로 트리거 및 응답을 저장하고 충족 된 조건에 따라 해당 조건을 전환 할 수 있습니다.
// 예제 응답 항목
{
입력 : 'HR',
InputMatch : '포함',
응답 : 'HR에 접촉 해야하는 경우,
그들의 이메일은 [email protected]입니다. ',
응답 유형 : 'ephemeral'
}
슬랙 API에서 사용할 수있는 몇 가지 다른 유용한 특성이 있습니다. 다행히이 자습서에서는 모든 봇 요구에 필요한 것에 대한 개요를 제공 받았습니다. 그를 읽어서 추가 자원을 찾을 수 있습니다 'Slackbots'문서 또는 전체 느슨한 API 문서 ...에
이 기사는 원래 Creative Web Design Magazine의 문제 289에 출판되었습니다. 웹 디자이너 ...에 여기 문제를 구입하십시오 또는 웹 디자이너를 구독하십시오 ...에
관련 기사:
Figma는 UI 디자이너를위한 그래픽 도구입니다. 간단한 인터페이스가 있으며 팀원과의 작업을 공동 작업 할 수 있습니다. 오프라인으로 작업하려�..