# Receive a channel message

> Learn about voice channels in Vivox Core.

When a channel message is received, the vx\_evt\_message event is raised.

```plaintext
typedef struct vx_evt_message
{
    /**
    * The common properties for all events
    */
    vx_evt_base_t base;
    /**
    * The handle returned from a successful SessionGroup create request.
    * \see vx_req_sessiongroup_create
    */
    VX_HANDLE sessiongroup_handle;
    /**
    * The handle returned from successful Session add request.
    * \see vx_req_sessiongroup_add_session
    */
    VX_HANDLE session_handle;
    /**
    * The URI of the sender of the message.
    */
    char *participant_uri;
    /**
    * The content type of the message.
    */
    char *message_header;
    /**
    * The contents of the message.
    */
    char *message_body;
    /**
    * The displayname if the participant_uri had a displayname.
    */
    char *participant_displayname;
    /**
    * The application of the entity who is sending the message.
    * Can be NULL or empty.
    */
    char *application;
    /**
    * The identity that the original sender wants to present.
    * This is different than the participant_uri, which is the actual internal Vivox identity of the original sender.
    */
    char *alias_username;
    /**
    * The encoded URI for the user with the tag.
    * This uniquely identifies users that might appear multiple times in a channel
    */
    char *encoded_uri_with_tag;
    /**
    * The message is from the current signed in user.
    */
    int is_current_user;
    /**
    * The language (default NULL, implies "en").
    */
    char *language;
    /**
    * The namespace of the custom application stanza (optional, default NULL).
    */
    char *application_stanza_namespace;
    /**
    * The custom application stanza body (optional, default NULL).
    */
    char *application_stanza_body;
}

vx_evt_message_t;
```

For more information, see [Group text messages](../../../developer-guide/messaging/group-text-messages).
