Before you begin
- Register a QuickBlox account. This is a matter of a few minutes and you will be able to use this account to build your apps.
- Configure QuickBlox SDK for your app. Check out Setup page for more details.
- Create a user session to be able to use QuickBlox functionality. See Authentication page to learn how to do it.
- Connect to the Chat server. See Connection page to learn how to do it.
Dialog types
All chats between users are organized in dialogs. There are 3 types of dialogs:- private dialog - a dialog between 2 users.
- group dialog - a dialog between the specified list of users.
- public dialog - an open dialog. Any user from your app can be joined to it.
Create dialog
To create a private dialog, you need to set the dialogtype
to 3
and ID of an opponent you want to create a chat with.
JavaScript
type
to 2
and IDs of opponents, you want to create a chat with.
JavaScript
type
to 1
and a name for a new dialog.
JavaScript
Create dialog with custom parameters
A dialog can be extended with additional parameters. These parameters can be used to store additional data. Also, these parameters can be used in dialogs retrieval requests. To start using additional parameters, create an additional schema of your parameters. This is a custom objects class. Just create an empty class with all fields that you need. These fields will be additional parameters in your dialog. See this section to learn how to create a schema using Custom Objects. Then, specify the parameters defined in the schema in a new dialog.JavaScript
params
.
Field | Required | Description |
---|---|---|
type | yes | Dialog type. There tree dialog types:- type: 1 - public dialog.- type: 2 - group dialog.- type: 3 - private dialog. |
name | yes | Dialog name. |
data | yes | Specifies additional parameters in a new dialog. |
Join dialog
Before you start chatting in a group or public dialog, you need to join it by calling thejoin()
method. If you’ve successfully joined the dialog, you can send/receive messages in real-time. See this section to learn how to send/receive messages.
JavaScript
Argument | Required | Description |
---|---|---|
dialogJid | yes | Room JID. JID (Jabber ID) of XMPP room in the XMPP server. Empty for a privatе dialog. Generated automatically by the server after dialog creation. You can get JID from the dialog ID. The JID format is the following: <app_id>-<dialog_id>@muc.chat.quickblox.com |
function() | yes | Specifies a callback function that accepts an error and result. |
join()
method is used with regard to the dialog type.
Capabilities | Public | Group | Private |
---|---|---|---|
Join | ✓ | ✓ | ✗ |
You can join a group dialog only if your user ID is present in the
occupants_ids
array, in the dialog model.Your user ID is added to the occupants_ids
array if you create a dialog or you are added to the dialog by the other user. See this section to learn how to add occupants to the group dialog.Leave dialog
You can leave the group or public dialog by calling theleave()
method. If the dialog is left, you can’t send/receive messages. To be able to receive/send messages, you need to join it.
JavaScript
Argument | Required | Description |
---|---|---|
dialogJid | yes | Room JID. JID (Jabber ID) of XMPP room in the XMPP server. Empty for a privatе dialog. Generated automatically by the server after dialog creation. You can get JID from the dialog ID. The JID format is the following: <app_id>-<dialog_id>@muc.chat.quickblox.com |
function() | yes | Specifies a callback function that accepts an error. |
leave()
method is used with regard to the dialog type.
Capabilities | Public | Group | Private |
---|---|---|---|
Leave | ✓ | ✓ | ✗ |
When a group dialog is left, your user ID is still present in the
occupants_ids
array, in the dialog model. As a result, the dialog will still be present in the list of dialogs and you will still have access to the chat history.To remove yourself from the group dialog, use the update()
method. See this section to learn how to remove occupants from the group dialog.Retrieve online users
You can get a list of online users from the dialog. Call thelistOnlineUsers()
method to get the list of online users who are joined to the dialog. As a result, an array of user IDs is returned.
JavaScript
listOnlineUsers()
method is used with regard to the dialog type.
Capabilities | Public | Group | Private |
---|---|---|---|
Retrieve online users | ✗ | ✓ | ✗ |
You can retrieve online users from the group dialog only if you are joined to it.
Retrieve list of dialogs
It’s common to request all your dialogs on every app login. The request below will return all private, group, and public dialogs created before the current date, sorted in descending order by thecreated_at
field, and limited to 10 dialogs on the page.
JavaScript
Argument | Required | Description |
---|---|---|
params | no | Specifies param fields that should be set. |
function() | yes | A callback function that an accepts error and dialogs. |
filter
:
Field | Required | Description |
---|---|---|
skip | no | Skip N records in search results. Useful for pagination. Default (if not specified): 0. Should be an Integer. |
limit | no | Limit search results to N records. Useful for pagination. Default value: 100. |
Search operators
You can use search operators to get more specific search results. The request below will return a list of all private and group dialogs.JavaScript
Search operators | Applicable to types | Applicable to fields | Description |
---|---|---|---|
lt | number, string, date | last_message_date_sent, created_at, updated_at | Less Than operator. |
lte | number, string, date | last_message_date_sent, created_at, updated_at | Less Than or Equal to operator. |
gt | number, string, date | last_message_date_sent, created_at, updated_at | Greater Than operator. |
gte | number, string, date | last_message_date_sent, created_at, updated_at | Greater Than or Equal to operator. |
ne | number, string, date | _id, name, last_message_date_sent | Not Equal to operator. |
in | number, string, date | type, last_message_date_sent, name | IN array operator. |
nin | number, string, date | last_message_date_sent | IN array operator. |
all | number | occupants_ids | ALL are contained in array. |
ctn | string | name | All records that contain a particular substring. |
Sort operators
You can use sort operators to order the search results. The request below will return dialogs created since the beginning of this year and sorted in descending order.JavaScript
Sort operator | Applicable to types | Applicable to fields | Description |
---|---|---|---|
sort_asc | All types | id, created_at, name, last_message_date_sent | Search results will be sorted in ascending order by the specified field. |
sort_desc | All types | id, created_at, name, last_message_date_sent | Search results will be sorted in descending order by the specified field. |
Aggregation operators
You can use an aggregation operator to count search results. The request below will return a count of all group dialogs from the server.JavaScript
Aggregation operator | Description |
---|---|
count | Count search results. The response will contain only a count of records found. Set count to 1 to apply. |
Retrieve dialogs by custom parameters
You can retrieve dialogs by custom parameters. The request below will return all private, group, and public dialogs with a givencategory
and class_name
.
JavaScript
Update dialog
You can update the information for a private, group, and public dialog.JavaScript
Capabilities | Public dialog | Group dialog | Private dialog |
---|---|---|---|
Update a dialog name | Owner | Owner | ✗ |
Update a photo | Owner | Owner | ✗ |
Update custom parameters | Owner,Occupant | Owner,Occupant | Owner,Occupant |
Add occupants
Set thepush_all
field to add occupants to the dialog. As a result, the ID of the opponent will be added to the occupants_ids
array.
JavaScript
Arguments | Required | Description |
---|---|---|
dialogId | yes | Dialog ID. |
toUpdateParams | yes | Specifies the toUpdateParams fields that should be set. |
Capabilities | Public dialog | Group dialog | Private dialog |
---|---|---|---|
Add other users | ✗ | Owner,Occupant | ✗ |
Remove occupants
Set thepull_all
field to remove occupants from the dialog. As a result, the ID of the opponent will be removed from the occupants_ids
array.
JavaScript
Argument | Required | Description |
---|---|---|
dialogId | yes | Dialog ID. |
toUpdateParams | yes | Specifies the toUpdateParams fields that should be set. |
Capabilities | Public dialog | Group dialog | Private dialog |
---|---|---|---|
Remove other users | ✗ | Owner | ✗ |
Remove yourself | ✗ | Owner,Occupant | ✗ |
Delete dialog
The request below will remove the dialog for a current user, but other users will be still able to chat there.JavaScript
force
to 1
to completely remove the dialog for all users. You can also delete multiple dialogs in a single request.
JavaScript
Capabilities | Public | Group | Private |
---|---|---|---|
Delete dialog for all userusing forceparameter. | Owner | Owner | Owner |
Delete dialog for a current user | Owner | Owner,Occupant | Owner,Occupant |
Get number of unread messages
You can get a number of unread messages from a particular dialog using thelist()
method.
JavaScript
unreadCount()
method.
JavaScript
params
:
Field | Description |
---|---|
chat_dialog_ids | IDs of dialogs.- If chat_dialog_ids are not specified, the total number of unread messages for all dialogs of the user will be returned.- If chat_dialog_ids are specified, the number of unread messages for each specified dialog will be returned. Also, the total number of unread messages for all dialogs of the user will be returned. |
Resources
A sequence of steps a user takes to start a dialog by moving through the application lifecycle.