To be able to send APNS notifications to Apple servers or GCM notifications to Google servers, application certificates (APNS) or an application key (GCM) must be specified in the application settings.
To subscribe to notifications, the client must invoke the account.registerDevice query, passing in token_type and token as parameters that identify the current device. It is useful to repeat this query at least once every 24 hours or when restarting the application. Use account.unregisterDevice to unsubscribe.
The following modes are supported:
1
- APNS (device token for apple push)2
- FCM (firebase token for google firebase)3
- MPNS (channel URI for microsoft push)4
- Deprecated: Simple push (endpoint for firefox's simple push API)5
- Ubuntu phone (token for ubuntu push)6
- Blackberry (token for blackberry push)7
- MTProto separate session8
- WNS (windows push)9
- APNS VoIP (token for apple push VoIP)10
- Web push (web push, see below)11
- MPNS VoIP (token for microsoft push VoIP)12
- Tizen (token for tizen push)For 10
web push, the token must be a JSON-encoded object with the following keys:
endpoint
: Absolute URL exposed by the push service where the application server can send push messageskeys
: P-256 elliptic curve Diffie-Hellman parameters in the following objectp256dh
: Base64url-encoded P-256 elliptic curve Diffie-Hellman public keyauth
: Base64url-encoded authentication secretFor FCM and APNS VoIP, an optional encryption key used to encrypt push notifications can be passed to account.registerDevice (secret
). This key (auth_key
) is used to encrypt the payloads using MTProto v2.
The FCM payload will be a JSON payload, containing a p
field with the base64url-encoded encrypted MTProto payload. After decryption, the result will be a JSON object, prefixed by a 32-bit little-endian integer with the length of the JSON payload. As usual, make sure to follow all security checks as described in the MTProto docs.
As mentioned above, payloads can also be encrypted using P-256 Elliptic Curve Diffie-Hellman when using web push.
An (optionally encrypted) notification is provided as a JSON object in the following format:
{
"data": {
"loc_key": "CHAT_MESSAGE_CONTACT",
"loc_args": ["John Doe", "My magical group", "Contact Exchange"],
"user_id": 14124122,
"custom": {
"chat_id": 241233,
"msg_id": 123
},
"sound": "sound1.mp3",
}
}
Each notification has several parameters that describe it.
/[A-Z_0-9]+/
, which summarizes the notification. For example, CHAT_MESSAGE_TEXT
.777000
) user, but must be delivered via push notifications, without contacting the API.In principle, data.loc_key, data.custom, and an Internet connection are sufficient to generate a notification. Obviously, if possible, when generating a visual notification you need not use all of the transmitted data and may rely on the information already stored on the client. But if a user or a chat is not cached locally, the values passed in loc_args may also be used. data.user_id is the ID of the account to which the PUSH notification should be delivered, in case of clients with multiple accounts active and running.
The following notifications can be used to update app settings.
Type | Extra custom arguments | Description |
---|---|---|
DC_UPDATE | data.custom.dc - number of the data-center data.custom.addr - server address with port number in the format 111.112.113.114:443 |
In case the client gets this notification, it is necessary to add the received server address to the list of possible addresses. In case the address of the first DC was passed (dc=1 ), it is recommended to call it immediately using help.getConfig to update dc-configuration. |
MESSAGE_DELETED | data.custom.channel_id: For channels and supergroups, Channel/supergroup identifier data.custom.chat_id: For chats, Chat identifier data.custom.from_id: For PMs, Author identifier data.custom.messages: Comma-separated IDs of messages that were deleted |
Messages were deleted, remove multiple notifications for this chat |
READ_HISTORY | data.custom.channel_id: For channels and supergroups, Channel/supergroup identifier data.custom.chat_id: For chats, Chat identifier data.custom.from_id: For PMs, Author identifier data.custom.max_id: Maximum ID of read messages |
Message history was read, remove multiple notifications for this chat |
GEO_LIVE_PENDING | Any of the live locations currently being shared should be updated | |
SESSION_REVOKE | Logout and remove DB for specified session by data.user_id, only apply if coming from an MTProto-encrypted payload | |
MESSAGE_MUTED | Sent rarely, every 10th message in chats or once per 15 sec in PM, to update badge or download messages | |
MESSAGE_ANNOUNCEMENT | data.announcement: Announcement | Roughly equivalent to a message received from the service notifications (Telegram Notifications, id 777000 ) user, but must be delivered via push notifications, without contacting the API. |
Type | Template example | Arguments |
---|---|---|
AUTH_REGION | New login from unrecognized device {1}, location: {2} | 1. Device name 2. Location |
AUTH_UNKNOWN | New login from unrecognized device {1} | 1. Device name |
CHANNEL_MESSAGES | {1} posted an album | 1. Message author |
CHANNEL_MESSAGE_AUDIO | {1} posted a voice message | 1. Message author |
CHANNEL_MESSAGE_CONTACT | {1} posted a contact {2} | 1. Message author 2. Contact name |
CHANNEL_MESSAGE_DOC | {1} posted a file | 1. Message author |
CHANNEL_MESSAGE_DOCS | {1} posted {2} files | 1. Channel name 2. Number of documents that were posted |
CHANNEL_MESSAGE_FWDS | {1} posted {2} forwarded messages | 1. Message author 2. Number of forwarded messages |
CHANNEL_MESSAGE_GAME | {1} invited you to play {2} | 1. Message author 2. Game name |
CHANNEL_MESSAGE_GAME_SCORE | {1} scored {3} in game {2} | 1. User 2. Game name 3. Score |
CHANNEL_MESSAGE_GEO | {1} posted a location | 1. Channel name |
CHANNEL_MESSAGE_GEOLIVE | {1} posted a live location | 1. Channel name |
CHANNEL_MESSAGE_GIF | {1} posted a GIF | 1. Channel name |
CHANNEL_MESSAGE_NOTEXT | {1} posted a message | 1. Channel name |
CHANNEL_MESSAGE_PHOTO | {1} posted a photo | 1. Channel name |
CHANNEL_MESSAGE_PHOTOS | {1} posted {2} photos | 1. Channel name 2. Number of photos that was sent |
CHANNEL_MESSAGE_PLAYLIST | {1} posted {2} music files | 1. Channel name 2. Number of audio files that were posted |
CHANNEL_MESSAGE_POLL | {1} posted a poll {2} | 1. Channel name 2. Poll name |
CHANNEL_MESSAGE_QUIZ | {1} posted a quiz {2} | 1. Channel name 2. Quiz name |
CHANNEL_MESSAGE_ROUND | {1} posted a video message | 1. Channel name |
CHANNEL_MESSAGE_STICKER | {1} posted a {2} sticker | 1. Channel name 2. Sticker emoji |
CHANNEL_MESSAGE_TEXT | {1}: {2} | 1. Channel name 2. Message body |
CHANNEL_MESSAGE_VIDEO | {1} posted a video | 1. Channel name |
CHANNEL_MESSAGE_VIDEOS | {1} posted {2} videos | 1. Channel name 2. Number of videos that were posted |
CHAT_ADD_MEMBER | {1} invited {3} to the group {2} | 1. Message author 2. Chat name 3. New participant name |
CHAT_ADD_YOU | {1} invited you to the group {2} | 1. User name 2. Group name |
CHAT_CREATED | {1} invited you to the group {2} | 1. Message author 2. Chat name |
CHAT_DELETE_MEMBER | {1} removed {3} from the group {2} | 1. Message author 2. Chat name 3. Dropped participant name |
CHAT_DELETE_YOU | {1} removed you from the group {2} | 1. Message author 2. Chat name |
CHAT_JOINED | {1} joined the group {2} | 1. User name 2. Group name |
CHAT_LEFT | {1} left the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGES | {1} sent an album to the group {2} | 1. User name 2. Group name |
CHAT_MESSAGE_AUDIO | {1} sent a voice message to the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGE_CONTACT | {1} shared a contact {3} in the group {2} | 1. User name 2. Group name 3. Contact name |
CHAT_MESSAGE_DOC | {1} sent a file to the group {2} | 1. User name 2. Group name |
CHAT_MESSAGE_DOCS | {1} sent {3} files to the group {2} | 1. User name 2. Group name 3. Number of documents that were sent |
CHAT_MESSAGE_FWDS | {1} forwarded {3} messages to the group {2} | 1. User name 2. Group name 3. Number of messages that were forwarded |
CHAT_MESSAGE_GAME | {1} invited the group {2} to play {3} | 1. User name 2. Group name 3. Game name |
CHAT_MESSAGE_GAME_SCORE | {1} scored {4} in game {3} in the group {2} | 1. User name 2. Group name 3. Game name 4. Score |
CHAT_MESSAGE_GEO | {1} sent a location to the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGE_GEOLIVE | {1} shared a live location with the group {2} | 1. User name 2. Group name |
CHAT_MESSAGE_GIF | {1} sent a GIF to the group {2} | 1. User name 2. Group name |
CHAT_MESSAGE_INVOICE | {1} sent an invoice to the group {2} for {3} | 1. User name 2. Group name 3. Product name |
CHAT_MESSAGE_NOTEXT | {1} sent a message to the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGE_PHOTO | {1} sent a photo to the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGE_PHOTOS | {1} sent {3} photos to the group {2} | 1. User name 2. Group name 3. Number of photos that were sent |
CHAT_MESSAGE_PLAYLIST | {1} sent {3} music files to the group {2} | 1. User name 2. Group name 3. Number of audio files that were sent |
CHAT_MESSAGE_POLL | {1} sent a poll {3} to the group {2} | 1. User name 2. Group name 3. Poll name |
CHAT_MESSAGE_QUIZ | {1} sent a quiz {3} to the group {2} | 1. User name 2. Group name 3. Quiz name |
CHAT_MESSAGE_ROUND | {1} sent a video message to the group {2} | 1. User name 2. Group name |
CHAT_MESSAGE_STICKER | {1} sent a {3} sticker to the group {2} | 1. User name 2. Group name 3. Sticker emoji |
CHAT_MESSAGE_TEXT | {1} @ {2}: {3} | 1. Message author 2. Chat name 3. Message body |
CHAT_MESSAGE_VIDEO | {1} sent a video to the group {2} | 1. Message author 2. Chat name |
CHAT_MESSAGE_VIDEOS | {1} sent {3} videos to the group {2} | 1. User name 2. Group name 3. Number of videos that were sent |
CHAT_PHOTO_EDITED | {1} changed the group photo for {2} | 1. Message author 2. Chat name |
CHAT_REACT_AUDIO | {1}: {3} to your voice message in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_CONTACT | {1}: {3} to your contact {4} in {2} | 1. User name 2. Group name 3. Reaction 4. Contact name |
CHAT_REACT_DOC | {1}: {3} to your file in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_GAME | {1}: {3} to your game in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_GEO | {1}: {3} to your map in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_GEOLIVE | {1}: {3} to your live location in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_GIF | {1}: {3} to your GIF in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_INVOICE | {1}: {3} to your invoice in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_NOTEXT | {1}: {3} to your message in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_PHOTO | {1}: {3} to your photo in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_POLL | {1}: {3} to your poll {4} in {2} | 1. User name 2. Group name 3. Reaction 4. Poll name |
CHAT_REACT_QUIZ | {1}: {3} to your quiz {4} in {2} | 1. User name 2. Group name 3. Reaction 4. Quiz name |
CHAT_REACT_ROUND | {1}: {3} to your video message in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REACT_STICKER | {1}: {3} to your {4} sticker in {2} | 1. User name 2. Group name 3. Reaction 4. Sticker emoji |
CHAT_REACT_TEXT | {1}: {3} in {2} to your "{4}" | 1. User name 2. Group name 3. Reaction 4. Message body |
CHAT_REACT_VIDEO | {1}: {3} to your video in {2} | 1. User name 2. Group name 3. Reaction |
CHAT_REQ_JOINED | {2}|{1} was accepted into the group | 1. User name 2. Chat name |
CHAT_RETURNED | {1} returned to the group {2} | 1. Message author 2. Chat name |
CHAT_TITLE_EDITED | {1} renamed the group {2} | 1. User name 2. Group name |
CHAT_VOICECHAT_END | {1} ended a voice chat in the group {2} | 1. User name 2. Chat name |
CHAT_VOICECHAT_INVITE | {1} invited {3} to a voice chat in the group {2} | 1. User name 2. Chat name 3. Invited users |
CHAT_VOICECHAT_INVITE_YOU | {1} invited you to a voice chat in the group {2} | 1. User name 2. Chat name |
CHAT_VOICECHAT_START | {1} started a voice chat in the group {2} | 1. User name 2. Chat name |
CONTACT_JOINED | {1} joined Telegram! | 1. Contact name |
ENCRYPTED_MESSAGE | You have a new message | |
ENCRYPTION_ACCEPT | You have a new message | |
ENCRYPTION_REQUEST | You have a new message | |
LOCKED_MESSAGE | You have a new message | |
MESSAGES | {1} sent you an album | 1. User name |
MESSAGE_AUDIO | {1} sent you a voice message | 1. Message author |
MESSAGE_CONTACT | {1} shared a contact {2} with you | 1. User name 2. Contact name |
MESSAGE_DOC | {1} sent you a file | 1. User name |
MESSAGE_DOCS | {1} sent you {2} files | 1. User name 2. Number of documents that were sent |
MESSAGE_FWDS | {1} forwarded you {2} messages | 1. User name 2. Number of messages that were forwarded |
MESSAGE_GAME | {1} invited you to play {2} | 1. User name 2. Game name |
MESSAGE_GAME_SCORE | {1} scored {3} in game {2} | 1. User name 2. Game name 3. Score |
MESSAGE_GEO | {1} sent you a location | 1. Message author |
MESSAGE_GEOLIVE | {1} sent you a live location | 1. User name |
MESSAGE_GIF | {1} sent you a GIF | 1. User name |
MESSAGE_INVOICE | {1} sent you an invoice for {2} | 1. User name 2. Product |
MESSAGE_NOTEXT | {1} sent you a message | 1. Message author |
MESSAGE_PHOTO | {1} sent you a photo | 1. Message author |
MESSAGE_PHOTOS | {1} sent you {2} photos | 1. User name 2. Number of photos that were sent |
MESSAGE_PHOTO_SECRET | {1} sent you a self-destructing photo | 1. User name |
MESSAGE_PLAYLIST | {1} sent you {2} music files | 1. User name 2. Number of audio files that were sent |
MESSAGE_POLL | {1} sent you a poll {2} | 1. User name 2. Poll name |
MESSAGE_QUIZ | {1} sent you a quiz {2} | 1. User name 2. Quiz name |
MESSAGE_ROUND | {1} sent you a video message | 1. User name |
MESSAGE_SCREENSHOT | {1} took a screenshot | 1. User name |
MESSAGE_STICKER | {1} sent you a {2} sticker | 1. User name 2. Sticker emoji |
MESSAGE_TEXT | {1}: {2} | 1. Message author 2. Message body |
MESSAGE_VIDEO | {1} sent you a video | 1. Message author |
MESSAGE_VIDEOS | {1} sent you {2} videos | 1. User name 2. Number of videos that were sent |
MESSAGE_VIDEO_SECRET | {1} sent you a self-destructing video | 1. User name |
PHONE_CALL_MISSED | You missed a call from {1} | 1. User name |
PHONE_CALL_REQUEST | {1} is calling you! | 1. User name |
PINNED_AUDIO | {1} pinned a voice message | 1. User name |
PINNED_AUDIO | {1} pinned a voice message in the group {2} | 1. User name 2. Group name |
PINNED_CONTACT | {1} pinned a contact {2} | 1. User name 2. Contact name |
PINNED_CONTACT | {1} pinned a contact {3} in the group {2} | 1. User name 2. Group name 3. Contact name |
PINNED_DOC | {1} pinned a file | 1. User name |
PINNED_DOC | {1} pinned a file in the group {2} | 1. User name 2. Group name |
PINNED_GAME | {1} pinned a game | 1. User name |
PINNED_GAME | {1} pinned a game in the group {2} | 1. User name 2. Group name |
PINNED_GAME_SCORE | {1} pinned a game score | 1. User name |
PINNED_GAME_SCORE | {1} pinned a game score in the group {2} | 1. User name 2. Group name |
PINNED_GEO | {1} pinned a map | 1. User name |
PINNED_GEO | {1} pinned a map in the group {2} | 1. User name 2. Group name |
PINNED_GEOLIVE | {1} pinned a live location | 1. User name |
PINNED_GEOLIVE | {1} pinned a live location in the group {2} | 1. User name 2. Group name |
PINNED_GIF | {1} pinned a GIF | 1. User name |
PINNED_GIF | {1} pinned a GIF in the group {2} | 1. User name 2. Group name |
PINNED_INVOICE | {1} pinned an invoice | 1. User name |
PINNED_INVOICE | {1} pinned an invoice in the group {2} | 1. User name 2. Group name |
PINNED_NOTEXT | {1} pinned a message | 1. User name |
PINNED_NOTEXT | {1} pinned a message in the group {2} | 1. User name 2. Group name |
PINNED_PHOTO | {1} pinned a photo | 1. User name |
PINNED_PHOTO | {1} pinned a photo in the group {2} | 1. User name 2. Group name |
PINNED_POLL | {1} pinned a poll {2} | 1. User name 2. Poll name |
PINNED_POLL | {1} pinned a poll {3} in the group {2} | 1. User name 2. Group name 3. Poll name |
PINNED_QUIZ | {1} pinned a quiz {2} | 1. User name 2. Quiz name |
PINNED_QUIZ | {1} pinned a quiz {3} in the group {2} | 1. User name 2. Group name 3. Quiz name |
PINNED_ROUND | {1} pinned a video message | 1. User name |
PINNED_ROUND | {1} pinned a video message in the group {2} | 1. User name 2. Group name |
PINNED_STICKER | {1} pinned a {2} sticker | 1. User name 2. Sticker emoji |
PINNED_STICKER | {1} pinned a {3} sticker in the group {2} | 1. User name 2. Group name 3. Sticker emoji |
PINNED_TEXT | {1} pinned "{2}" | 1. User name 2. Message body |
PINNED_TEXT | {1} pinned "{3}" in the group {2} | 1. User name 2. Group name 3. Message body |
PINNED_VIDEO | {1} pinned a video | 1. User name |
PINNED_VIDEO | {1} pinned a video in the group {2} | 1. User name 2. Group name |
REACT_AUDIO | {1}: {2} to your voice message | 1. User name 2. Reaction |
REACT_CONTACT | {1}: {2} to your contact {3} | 1. User name 2. Reaction 3. Contact name |
REACT_DOC | {1}: {2} to your file | 1. User name 2. Reaction |
REACT_GAME | {1}: {2} to your game | 1. User name 2. Reaction |
REACT_GEO | {1}: {2} to your map | 1. User name 2. Reaction |
REACT_GEOLIVE | {1}: {2} to your live location | 1. User name 2. Reaction |
REACT_GIF | {1}: {2} to your GIF | 1. User name 2. Reaction |
REACT_INVOICE | {1}: {2} to your invoice | 1. User name 2. Reaction |
REACT_NOTEXT | {1}: {2} to your message | 1. User name 2. Reaction |
REACT_PHOTO | {1}: {2} to your photo | 1. User name 2. Reaction |
REACT_POLL | {1}: {2} to your poll {3} | 1. User name 2. Reaction 3. Poll name |
REACT_QUIZ | {1}: {2} to your quiz {3} | 1. User name 2. Reaction 3. Quiz name |
REACT_ROUND | {1}: {2} to your video message | 1. User name 2. Reaction |
REACT_STICKER | {1}: {2} to your {3} sticker | 1. User name 2. Reaction 3. Sticker emoji |
REACT_TEXT | {1}: {2} to your "{3}" | 1. User name 2. Reaction 3. Message body |
REACT_VIDEO | {1}: {2} to your video | 1. User name 2. Reaction |