This is legacy documentation. It is no longer actively maintained. For current docs, visit cometchat.com/docs.

Interactive Messages

Deprecated: The Ionic Cordova SDK is deprecated. For new Ionic/Cordova applications, please use the JavaScript SDK which provides full compatibility with Ionic applications.

An InteractiveMessage is a specialised object that encapsulates an interactive unit within a chat message, such as an embedded form that users can fill out directly within the chat interface. This enhances user engagement by making the chat experience more interactive and responsive to user input.

InteractiveMessage

InteractiveMessage is a chat message with embedded interactive content. It can contain various properties:

Parameter Description
receiverId The UID or GUID of the recipient Required
receiverType The type of the receiver to whom the message is to be sent (e.g., CometChatConstants.RECEIVER_TYPE_USER for user or CometChatConstants.RECEIVER_TYPE_GROUP for group) Required
messageType The type of the message that needs to be sent Required
interactiveData A JSONObject holding structured data for the interactive element Required
allowSenderInteraction A boolean determining whether the message sender can interact with the message (default is set to false)
interactionGoal An InteractionGoal object encapsulating the intended outcome of interacting with the InteractiveMessage (default is set to none)

Interaction

An Interaction represents a user action involved with an InteractiveMessage. It includes:

Goal Completion

A key feature of InteractiveMessage is checking whether a user's interactions with the message meet the defined InteractionGoal

You would be tracking every interaction users perform on an InteractiveMessage (captured as Interaction objects) and comparing those with the defined InteractionGoal. The completion of a goal can vary depending on the goal type:

Goals Description Keys
Any Interaction The goal is considered completed if there is at least one interaction. CometChatConstants.INTERACTION_TYPE_ANY
Any of Specific Interactions The goal is achieved if any of the specified interactions occurred. CometChatConstants.INTERACTION_TYPE_ANY_OF
All of Specific Interactions The goal is completed when all specified interactions occur. CometChatConstants.INTERACTION_TYPE_All_OF
None The goal is never completed CometChatConstants.INTERACTION_TYPE_NONE

This user interaction tracking mechanism provides a flexible and efficient way to monitor user engagement within an interactive chat session. By defining clear interaction goals and checking user interactions against these goals, you can manage user engagement and improve the overall chat experience in your CometChat-enabled application.

InteractionGoal

The InteractionGoal represents the desired outcome of an interaction with an InteractiveMessage. It includes:

Sending InteractiveMessages

The InteractiveMessage can be sent using the sendInteractiveMessage method of the CometChat class. The method requires an InteractiveMessage object and a CallbackListener for handling the response.

Here is an example of how to use it:

const interactiveData = {
  title: "Survey",
  formFields: [
    {
      elementType: "textInput",
      elementId: "name",
      optional: false,
      label: "Name",
      placeholder: {
        text: "Enter text here",
      },
    },
    {
      elementType: "textInput",
      elementId: "age",
      optional: true,
      label: "Age",
      maxLines: 1,
      placeholder: {
        text: "Enter text here",
      },
    },
    {
      elementType: "Select",
      elementId: "checkBox1",
      optional: true,
      label: "Check box element",
      defaultValue: ["chk_option_2"],
      options: [
        {
          label: "Option 1",
          value: "chk_option_1",
        },
        {
          label: "Option 2",
          value: "chk_option_2",
        },
      ],
    },
    {
      elementType: "dropdown",
      elementId: "gender",
      optional: false,
      label: "Gender",
      defaultValue: "male",
      options: [
        {
          label: "Male",
          value: "male",
        },
        {
          label: "Female",
          value: "female",
        },
      ],
    },
  ],
  submitElement: {
    elementType: "button",
    elementId: "submitButton",
    buttonText: "Submit",
    disableAfterInteracted: false,
    action: {
      actionType: "urlNavigation",
      url: "https://www.cometchat.com/",
    },
  },
};

const interactiveMessage = new CometChat.InteractiveMessage(
  receiverId,
  receiverType,
  "form",
  interactiveData
);

CometChat.sendInteractiveMessage(interactiveMessage)
  .then((message: CometChat.InteractiveMessage) => {
    // This block is executed when the InteractiveMessage is sent successfully.
  })
  .catch((error: CometChat.CometChatException) => {
    // This block is executed if an error occurs while sending the InteractiveMessage.
  });

Event Listeners

CometChat SDK provides event listeners to handle real-time events related to InteractiveMessage.

On InteractiveMessage Received

The onInteractiveMessageReceived event listener is triggered when an InteractiveMessage is received.

Here is an example:

CometChat.addMessageListener(
  "UNIQUE_ID",
  new CometChat.MessageListener({
    onInteractiveMessageReceived: (message: CometChat.InteractiveMessage) => {
      // This block is executed when an InteractiveMessage is received.
      // Here you can define logic to handle the received InteractiveMessage and display it in                                      your chat interface.
    },
  })
);

On Interaction Goal Completed

The onInteractionGoalCompleted event listener is invoked when an interaction goal is achieved.

Here is an example:

CometChat.addMessageListener(
  "UNIQUE_ID",
  new CometChat.MessageListener({
    onInteractionGoalCompleted: (receipt: CometChat.InteractionReceipt) => {
      // This block is executed when an interaction goal is completed.
      // Here you can specify the actions your application should take once an interaction goal is                              achieved, such as updating the UI or notifying the user.
    },
  })
);

These event listeners offer your application a way to provide real-time updates in response to incoming interactive messages and goal completions, contributing to a more dynamic and responsive user chat experience.

Usage

An InteractiveMessage is constructed with the receiver's UID, the receiver type, the interactive type, and interactive data as a JSONObject. Once created, the InteractiveMessage can be sent using CometChat's sendInteractiveMessage() method. Incoming InteractiveMessages can be received and processed via CometChat's message listener framework.