Какой стртктуры должен быть ответ от Telegram bot Webhook?
Всем привет, не так давно обнаружил нововведение в Telegram Bot API: вместо того чтобы отсылать отдельный POST запрос к api telegram теперь можно отправить response со статусом 200 на входящий Update.
https://core.telegram.org/bots/faq#how-can-i-make-...
Отправляю json формата:
{"method":"sendMessage","chat_id":11111111,"text":"Reply test"} |
{"method":"sendMessage","chat_id":11111111,"text":"Reply test"}
но сообщение не отсылается.
Проверил локально: ответ от вебхука приходит корректный
на всякий случай код на GO:
type Response struct { Method string `json:"method"` ChatId int `json:"chat_id"` Text string `json:"text"` } func handleUpdate(w http.ResponseWriter, r *http.Request) { response := Response{Method: "sendMessage", ChatId: 10101010, Text: "struct"} jsonData, err := json.Marshal(response) w.Write(jsonData) if err != nil { log.Fatal(err) } jsonStr := string(jsonData) log.Print(jsonStr) w.WriteHeader(http.StatusOK) w.Header().Set("Content-Type", "application/json") if err != nil { log.Fatalf("Error happened in JSON marshal. Err: %s", err) } return } |
type Response struct { Method string `json:"method"` ChatId int `json:"chat_id"` Text string `json:"text"` } func handleUpdate(w http.ResponseWriter, r *http.Request) { response := Response{Method: "sendMessage", ChatId: 10101010, Text: "struct"} jsonData, err := json.Marshal(response) w.Write(jsonData) if err != nil { log.Fatal(err) } jsonStr := string(jsonData) log.Print(jsonStr) w.WriteHeader(http.StatusOK) w.Header().Set("Content-Type", "application/json") if err != nil { log.Fatalf("Error happened in JSON marshal. Err: %s", err) } return }
Что делаю не так?
Дополнительно:
Проверьте заголовки ответа. Content-Type правильный? Content-Length присутствует?
Вообще лично я бы не заморачивался с этим и делал бы запросы по старинке - так хотябы можно получить подтверждение доставки.
Content-Type: application/json должен быть, а у тебя он text/plain.
Вероятно, ты заголовки выставляешь уже после того как началась отправка ответа.
- Помогло, спасибо, передвинул w.Header().Set("Content-Type", "application/json") в начало функции и все отработало как надо
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Для того чтобы правильно структурировать ответ от Telegram bot Webhook, необходимо следовать определенным правилам и форматам. Вот пример структуры ответа от Telegram bot Webhook:
{ "update_id": 10000, "message": { "message_id": 1365, "from": { "id": 123456789, "is_bot": false, "first_name": "John", "last_name": "Doe", "username": "johndoe" }, "chat": { "id": 123456789, "first_name": "John", "last_name": "Doe", "username": "johndoe", "type": "private" }, "date": 1628833072, "text": "Hello, World!" } }
Этот пример показывает структуру ответа от Telegram bot Webhook, где содержится информация об обновлении, сообщении, отправителе и чате. Важно учитывать, что каждое поле должно быть заполнено корректно и соответствовать требованиям Telegram API.
Также следует помнить, что ответ от Telegram bot Webhook может содержать и другие поля в зависимости от конкретного запроса или действия. Важно изучить документацию Telegram API для полного понимания всех возможных параметров и структуры ответа.
Надеюсь, данная информация поможет вам правильно структурировать ответ от Telegram bot Webhook и решить вашу проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать. Буду рад помочь!