[Yandex Cloud documentation](../../../index.md) > [Yandex Cloud Notification Service](../../index.md) > [Step-by-step guides](../index.md) > Topics > Sending a notification to a topic

# Sending a notification to a topic

{% list tabs group=instructions %}

- Management console {#console}

  1. In the [management console](https://console.yandex.cloud), select the folder containing the topic.
  1. Navigate to **Cloud Notification Service**.
  1. Select **Topics** on the left.
  
     1. Select the topic.
     1. Click **Send notification**.
     1. Select a notification type: 
          
         * **Same**: To send the same notification to all channel types.
         * **Different**: To enter different texts for different channel types.
     
     1. Enter the same text for all channels, or different texts for different channel types, in JSON format. If a channel is not specified, the notification will contain the `default` message text.
        
         Notification format in JSON:
         
         ```json
         {
           "default": "<Default_text>",
           "sms": "<Notification_text_for_sms>",
           "WEB": "<Notification_text_for_bowser>",
           "APNS": {
             "aps": {
               "alert": {
                 "title": "Notification_title",
                 "body": "Notification_text"
               }
             }
           },
           "GCM": {
             "notification": {
               "title": "Notification_title",
               "body": "Notification_text"
             }
           },
           "HMS": {
             "notification": {
               "title": "Notification_title",
               "body": "<Notification_text>"
             }
           },
           "RUSTORE": {
             "notification": {
               "title": "Notification_title",
               "body": "<Notification_text>"
             }
           }
         }
         ```
     
     1. Click **Send**.

- AWS CLI {#aws-cli}

  1. If you do not have the AWS CLI yet, [install and configure it](../../../storage/tools/aws-cli.md).
  1. Run this command:

     To send a notification:
     
     ```bash
     aws sns publish \
     --topic-arn <topic_ARN> \
     --message-structure json \
     --message '{"default": "<notification_text>","APNS": {"aps":{"alert":"<notification_text>"}},"GCM": {"notification":{"body":"<notification_text>"}},"HMS": {"notification":{"body":"<notification_text>"}},"RUSTORE": {"notification":{"body":"<notification_text>"}},"WEB": "<notification_text>","sms": "<notification_text>"}'
     ```
     
     Where:
       * `topic-arn`: Topic ARN.
       * `message-structure`: Message format (`json`).
       * `message`: Notification text or path to the notification file. To send different notifications depending on channel type, specify the channel and notification text: If some channel is not specified, the default message will be sent.
     
     Learn more about the `aws sns publish` command in [this AWS guide](https://docs.amazonaws.cn/en_us/sns/latest/dg/sns-publish-to-topic.html).

- AWS SDK for Python {#python}

  1. If you do not have the AWS SDK for Python (boto3) yet, [install and configure it](../../tools/sdk-python.md#aws-sdk).
  1. To create a push notification channel, use the following code:

     ```python
     try:
         response = client.publish(
             TopicArn="<topic_ARN>",
             Message=json.dumps({
                 "default": "<notification_text>",
                 "APNS": {"aps":{"alert":"<notification_text>"}},
                 "GCM": {"notification":{"body":"<notification_text>"}},
                 "HMS": {"notification":{"body":"<notification_text>"}},
                 "RUSTORE": {"notification":{"body":"<notification_text>"}},
                 "WEB": "<notification_text>",
                 "sms": "<notification_text>"
             }),
             MessageStructure="json"
         )
         print(f"Message ID: {response["MessageId"]}")
     except botocore.exceptions.ClientError as error:
         print(f"Error: {error}")
     ```
     
     Where:
     
     * `TopicArn`: Topic ARN.
     * `Message`: Notification text. You can add the same text for all channel types or different texts for each channel type. If a channel is not specified, the notification will contain the `default` message text.
     * `MessageStructure`: Message format (`json`).

{% endlist %}