ippy04/messengerbot 사용자에게 facebook 메신저 용 로봇을 구축하고 싶습니다.golang에서 본문없이 기능을 확장하는 방법
새 메시지를 받기 위해 라이브러리는 머리를 감쌀 수없는 구조를 사용합니다. 다음 함수 유형은 관련 library source file에 (그러나 몸없이) 정의 :
실제 로봇에type MessageReceivedHandler func(*MessengerBot, Event, MessageOpts, ReceivedMessage)
이러한 유형의 다음 gets attached :
type MessengerBot struct {
MessageReceived MessageReceivedHandler
}
나중에 코드 it gets called이 같은 :
if bot.MessageReceived != nil {
go bot.MessageReceived(bot, entry.Event, message.MessageOpts, *message.Message)
}
이제는 내 패키지에서 실제 바디 구현으로 MessageReceivedHandler
을 확장해야 할 것 같습니다. 나는 몇 가지 시도했다.
:
import "github.com/ippy04/messengerbot"
type myMRH messengerbot.MessageReceivedHandler
func (mr myMRH) HRM() {
log.Println("works!")
}
...하지만 그 코드는 절대 호출되지됩니다.
또한 나는 (GinGonic 사용 미안)router.POST("/webhook", func(c *gin.Context) {
bot := messengerbot.NewMessengerBot(os.Getenv("FB_PAGE_ACCESS_TOKEN"), os.Getenv("FB_MESSENGER_VERIFY_TOKEN"))
bot.Debug = true
bot.MessageReceived = func(*MessengerBot, Event, MessageOpts, ReceivedMessage) {
log.Println("works!")
}
bot.Handler(c.Writer, c.Request)
})
을 같은 bot.MessageReceived
을 확장하려하지만 그때 나는 어디에 그들이 enot 라이브러리에 의해 노출 아칸소 이후에서 필요한 기능 변수를 얻는 아무 생각이 없습니다.
그 구현 방법에 대한 아이디어는 MessageReceivedHandler
입니까?
router.POST("/webhook", func(c *gin.Context) {
bot := messengerbot.NewMessengerBot(os.Getenv("FB_PAGE_ACCESS_TOKEN"), os.Getenv("FB_MESSENGER_VERIFY_TOKEN"))
bot.Debug = true
bot.MessageReceived = func(bot *messengerbot.MessengerBot, evt messengerbot.Event, opts messengerbot.MessageOpts, msg messengerbot.ReceivedMessage) {
log.Println(msg.Message.Text)
}
bot.Handler(c.Writer, c.Request)
})
포인터 주셔서 감사합니다. 나는 그것을 이미 시도했지만 함수 매개 변수를 채우기 위해 필요한 변수에 액세스 할 수 없음을 발견했습니다. 내 주요 질문에 추가하겠습니다. 여행은 물론 갔다. 그러나 그것은 얼마 전에 있었다.) 내가 새롭게 할 것이다라고 생각해라. 사실 내 문제에 대한 힌트를 찾기 위해 어제 그것을 살펴 봤지만 사건에 맞는 것을 만들 수 없었다. 인터페이스에 대한 장이 여기에 적용되지 않은 것 같습니다. – perelin
변수는 라이브러리에 의해 콜백으로 전송됩니다. 예제를 확장하여 명확하게했습니다. –
알았어요. 추가해야 할 것은 라이브러리 패키지에서 유형을 가져 오는 것뿐이었습니다. 고마워! – perelin