aboutsummaryrefslogtreecommitdiff
path: root/examples/example_webhook.go
diff options
context:
space:
mode:
authorAlexander Kiryukhin <a.kiryukhin@mail.ru>2019-08-09 02:02:05 +0300
committerAlexander Kiryukhin <a.kiryukhin@mail.ru>2019-08-09 02:02:05 +0300
commit94c96cef29cd83bc60b2eabb8bb89c9fd8c7059b (patch)
tree676b3e2b6ffb171e102931e5fac01f7a4621c20a /examples/example_webhook.go
parentd13acd7da9bd1c08de33b91120a479df88d21db2 (diff)
0.1.8 Release
Diffstat (limited to 'examples/example_webhook.go')
-rw-r--r--examples/example_webhook.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/example_webhook.go b/examples/example_webhook.go
new file mode 100644
index 0000000..ad1bdae
--- /dev/null
+++ b/examples/example_webhook.go
@@ -0,0 +1,53 @@
+// +build ignore
+
+/**
+ * Webhook example
+ */
+package main
+
+import (
+ "fmt"
+ "log"
+ "net/http"
+ "os"
+
+ "github.com/neonxp/tamtam"
+)
+
+func main() {
+ // Initialisation
+ api := tamtam.New(os.Getenv("TOKEN"))
+ host := os.Getenv("HOST")
+
+ // Some methods demo:
+ info, err := api.Bots.GetBot()
+ log.Printf("Get me: %#v %#v", info, err)
+
+ subs, _ := api.Subscriptions.GetSubscriptions()
+ for _, s := range subs.Subscriptions {
+ _, _ = api.Subscriptions.Unsubscribe(s.Url)
+ }
+ subscriptionResp, err := api.Subscriptions.Subscribe(host+"/webhook", []string{})
+ log.Printf("Subscription: %#v %#v", subscriptionResp, err)
+
+ ch := make(chan interface{}) // Channel with updates from TamTam
+
+ http.HandleFunc("/webhook", api.GetHandler(ch))
+ go func() {
+ for {
+ upd := <-ch
+ log.Printf("Received: %#v", upd)
+ switch upd := upd.(type) {
+ case tamtam.MessageCreatedUpdate:
+ res, err := api.Messages.SendMessage(0, upd.Message.Sender.UserId, &tamtam.NewMessageBody{
+ Text: fmt.Sprintf("Hello, %s! Your message: %s", upd.Message.Sender.Name, upd.Message.Body.Text),
+ })
+ log.Printf("Answer: %#v %#v", res, err)
+ default:
+ log.Printf("Unknown type: %#v", upd)
+ }
+ }
+ }()
+
+ http.ListenAndServe(":10888", nil)
+}