Golang의 Mattermost 챗봇 사용
3688 단어 gochatbotmattermost
많은 다른 메시지 전달 응용 프로그램과 마찬가지로 Mattermost는 로봇 생성을 지원한다.웹소켓 클라이언트를 이용하여 메시지 전달 이벤트를 감청합니다.언어 귀속도python과golang 같은 프로그래밍 언어에 적용되지만 이번에는 golang을 언어로 선택했습니다.
Mattermost는 채널을 사용하여 메시지를 교환합니다.그래서 mattermost에서 발생하는 모든 대화는 통로를 통해 실행된다. 직접 통로, 개인 통로든 공공 통로든 소식이다.코드와 어떻게 작동하는지 설명해 드릴게요.이쪽으로 오세요.완전한 원본 코드에 대해 나는 실현의 중요한 부분만 설명하고 싶다. 그래서 우리는 시작한다...
우선, 분명히 로봇이 가장 중요한 기능을 방문하는 클라이언트 대상이다(골롱에서 이를'대상'이라고 부르는 것이 언어 설계 원칙에 부합되는지 확실하지 않다. 어쨌든 나는 너에게 힌트를 하나 주겠다. 그것은 하나의 구조일 뿐이다!)세그먼트는 다음과 같습니다.
client = model.NewAPIv4Client(URL)
그리고 우리는 방문 영패를 설정해야 한다. 우리는 영패를 사용하여 신분 검증을 해야 한다. 왜냐하면 우리는 사용자 이름과 비밀번호가 아니라'bot'계정을 사용하기 때문이지,bot의 실제 사용자 계정이 되기 때문이다.나는 네가 무슨 생각을 하는지 안다. mattermost에는 두 가지 유형의 사용자가 있다. '실제' 사용자와 로봇진정한'사용자'는 당신일 수도 있고, 이 순간에 숨을 쉬는 누구일 수도 있다. 그들은 mattermost를 사용한다. 그것은 인간이다.그럼 로봇은...좋아요.로봇 프로그램.Bot은 로그인할 수 없는 특수한 유형의 사용자이므로 암호가 없습니다.그래서 로봇이 mattermost에 들어가는 유일한 방법은 영패를 사용하는 것이라고 놀라지 않을 것 같다.이 행 코드는 다음 작업을 수행할 수 있습니다.client.SetToken(BOT_TOKEN_SECRET)
다음 중요한 일은 채팅 이벤트를 감청하기 위해 웹소켓 클라이언트를 만드는 것입니다.webSocketClient, err := model.NewWebSocketClient4("ws://localhost:8065", client.AuthToken)
if err != nil {
println("We failed to connect to the web socket")
PrintError(err)
}
우리는 이전 단계에서 설정한 클라이언트 대상에서 웹소켓 URL과 신분 검증 영패인 SetToken 함수를 전달해야 한다.오류가 발생하면 이 코드는 오류 대상을 되돌려줍니다. 그 중 오류는mattermost 모델의 한 종류입니다.나타나다더 잘 알 수 있도록, 모델.AppError에는 오류 id, 메시지, 세부 정보, http 상태 코드 등 몇 가지 유용한 속성이 있습니다.웹소켓 클라이언트를 만든 후 이벤트를 탐지하는 것을 잊지 마십시오.webSocketClient.Listen()
이 말은 틀림없이 자기 해석 코드이기 때문에 우리는 우리의 여정의 핵심인 웹소켓 이벤트에 응답하는 것을 더욱 이해하게 된다.go func() {
for {
select {
case resp := <-webSocketClient.EventChannel:
HandleWebSocketResponse(resp)
}
}
}()
웹소켓의 채널 가치를 포착하기 위한 무한한 과정이 시작되었는데 이 주제에서 가장 재미있는 부분은 바로 전송된 채팅에 응답하는 것이다.다음은 찾으려는 세그먼트입니다.if post.ParentId == "" {
if matched, _ := regexp.MatchString(`(?:^|\W)leave day(?:$|\W)`, post.Message); matched {
SendMsgToChannel(dm.Id, "You have 16 leave days left.", post.Id)
return
} else {
SendMsgToChannel(dm.Id, "I did not understand you!", post.Id)
}
} else {
form := url.Values{}
form.Add("post_root", post.ParentId)
form.Add("user_mm_id", post.UserId)
form.Add("comment", post.Message)
endpoint := "timesheet/broadcast_task_comment_except_user"
response, _ := http.PostForm(API_URL+endpoint, form)
defer response.Body.Close()
}
이런 상황에서 내가 직장에서 사용하는 것처럼 내 로봇은 채팅에 대한 회답과 포스터를 사용하는 새로운 채팅을 구분할 수 있다.Parent ID 변수내가 내게 준 로봇 프로그래밍은 사용자(직원)에게 현재 몇 년의 휴가가 있는지 알려주고 우리 내부 시스템의 잘못된 토론 라인에서 정보를 방송한다.보시다시피 완성된 코드가 내부 개인 저장소로 이동했기 때문에 일부 코드는 위조 코드입니다.그럼에도 불구하고, 이 모든 것들은 API 클라이언트를 시작하는 것부터 채팅 이벤트에 응답하는 로봇을 만드는 방법을 알려줄 것이다.이 예는 여전히 규칙을 바탕으로 하는 로봇 메커니즘을 사용한다. 물론 너는 더욱 선진적인 기술, 예를 들어 기계 학습을 사용할 수 있다. 이것은 사실상 너의 수요에 달려 있다.그 전에 해커가 즐거우시길 바랍니다!안녕히 가세요.
Reference
이 문제에 관하여(Golang의 Mattermost 챗봇 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adityanuar/mattermost-chatbot-using-golang-2i8l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)