Webhooks: post each new incoming message (closes #7)
check / check (push) Successful in 1m45s
check / check (push) Successful in 1m45s
Each message a contact sends in a direct chat is posted to each webhook on that chat, as JSON holding `chat_id` and the message record of the messages endpoint. The event handler only queues it: `api.Deliveries` serves a queue of 100 with four goroutines, reads the chat's webhooks there, and makes one POST per webhook, with a 10-second timeout, no retry and no redirect followed. A full queue or a failed post is logged by ids, never by URL or text. `bot.Run` stops it last, once the chat client has exited. Tests cover the payload and its routing, a full queue, failures, and a webhook that never answers; the README documents the payload and what delivery promises. Model: opus-5-5
This commit is contained in:
+4
-1
@@ -1,6 +1,7 @@
|
||||
// Package api is the bot's HTTP API, through which another program
|
||||
// reads the bot's chats, sends messages in them and registers webhooks
|
||||
// on them.
|
||||
// on them. Deliveries posts to those webhooks each message a contact
|
||||
// sends.
|
||||
//
|
||||
// Every request must carry the credential, as "Authorization: Bearer
|
||||
// {credential}"; with no credential configured, every request is
|
||||
@@ -9,6 +10,8 @@
|
||||
// Handlers call the chat client on the request's own goroutine. Doing
|
||||
// so from the chat client's event handler would wait forever, since
|
||||
// that goroutine also delivers the responses (see simplex.EventHandler).
|
||||
// For the same reason, the event handler hands messages to Deliveries
|
||||
// without waiting.
|
||||
package api
|
||||
|
||||
import (
|
||||
|
||||
Reference in New Issue
Block a user