How To Use
Here you will find how to use SmartChat Assistant in your aplication
Since SmartChat Assistant is connected to a QuickBlox user, you can interact with it just like you would with a regular user. You have the option to create private or group dialogs with the assistant.
SmartChat Assistant is not available in the Public Dialogs
Create a private dialog with SmartChat Assistant
The easiest way to interact with the SmartChat Assistant is to create a private(1-to-1) dialog and the assistant will answer to any your message.
iOS
To create a private(1-to-1) dialog, you need to set the dialog type field to private
and ID of the opponent you want to create a chat with.
let assistantId = 34
let dialog = QBChatDialog(dialogID: nil, type: .private)
dialog.occupantIDs = [assistantId]
QBRequest.createDialog(dialog, successBlock: { (response, createdDialog) in
}, errorBlock: { (response) in
})
NSNumber *assistantId = @(34);
QBChatDialog *dialog = [[QBChatDialog alloc] initWithDialogID:nil type:QBChatDialogTypePrivate];
dialog.occupantIDs = @[assistantId];
[QBRequest createDialog:dialog successBlock:^(QBResponse * _Nonnull response, QBChatDialog * _Nonnull createdDialog) {
} errorBlock:^(QBResponse * _Nonnull response) {
}];
Android
To create a private(1-to-1) dialog, you need to set the dialog type to QBDialogType.PRIVATE
and ID of the opponent you want to create a chat with.
int assistantId = 34;
ArrayList<Integer> occupantIdsList = new ArrayList<Integer>();
occupantIdsList.add(assistantId);
QBChatDialog dialog = new QBChatDialog();
dialog.setType(QBDialogType.PRIVATE);
dialog.setOccupantsIds(occupantIdsList);
QBRestChatService.createChatDialog(dialog).performAsync(new QBEntityCallback<QBChatDialog>() {
@Override
public void onSuccess(QBChatDialog result, Bundle bundle) {
}
@Override
public void onError(QBResponseException exception) {
}
});
val assistantId = 34
val occupantIdsList = ArrayList<Int>()
occupantIdsList.add(assistantId)
val dialog = QBChatDialog()
dialog.type = QBDialogType.PRIVATE
dialog.setOccupantsIds(occupantIdsList)
// or just use DialogUtils
//QBChatDialog dialog = DialogUtils.buildPrivateDialog(recipientId);
QBRestChatService.createChatDialog(dialog).performAsync(object : QBEntityCallback<QBChatDialog> {
override fun onSuccess(result: QBChatDialog?, bundle: Bundle?) {
}
override fun onError(exception: QBResponseException?) {
}
})
JavaScript
To create a private(1-to-1) dialog, you need to set the dialog type to 3
and ID of the opponent you want to create a chat with.
const assistantId = 34
const params = {
type: 3,
occupants_ids: [assistantId]
};
QB.chat.dialog.create(params, function(error, dialog) {});
ReactNative
To create a private(1-to-1) dialog, you need to set the type to QB.chat.DIALOG_TYPE.CHAT
and ID of the opponent you want to create a chat with.
const assistantId = 34
const params = {
type: QB.chat.DIALOG_TYPE.CHAT,
occupantsIds: [assistantId]
};
QB.chat
.createDialog(params)
.then(function (dialog) {
})
.catch(function (e) {
});
Flutter
To create a private(1-to-1) dialog, you need to set the type to QBChatDialogTypes.CHAT
and ID of the opponent you want to create a chat with.
int assistantId = 34;
List<int> occupantsIds = [assistantId];
int dialogType = QBChatDialogTypes.CHAT;
try {
QBDialog? createdDialog = await QB.chat.createDialog(occupantsIds, null, dialogType: dialogType);
} on PlatformException catch (e) {
}
Create a group dialog with SmartChat Assistant
Also, your users can interact with the SmartChat Assistant in group dialogs.
iOS
To create a group dialog for a predefined number of occupants, you need to set the dialog type field to group
and IDs of opponents you want to create a chat with.
let assistantId = 34
let chatDialog = QBChatDialog(dialogID: nil, type: .group)
chatDialog.name = "Dialog with assistant"
chatDialog.occupantIDs = [assistantId, 45, 55]
QBRequest.createDialog(chatDialog, successBlock: { (response, dialog) in
dialog.join(completionBlock: { (error) in
})
}, errorBlock: { (response) in
})
NSNumber *assistantId = @(34);
QBChatDialog *chatDialog = [[QBChatDialog alloc] initWithDialogID:nil type:QBChatDialogTypeGroup];
chatDialog.name = @"Dialog with assistant";
chatDialog.occupantIDs = @[assistantId, @45, @55];
[QBRequest createDialog:chatDialog successBlock:^(QBResponse * _Nonnull response, QBChatDialog * _Nonnull dialog) {
[dialog joinWithCompletionBlock:^(NSError * _Nullable error) {
}];
} errorBlock:^(QBResponse * _Nonnull response) {
}];
Android
To create a group dialog for a predefined number of occupants, you need to set the dialog type to QBDialogType.GROUP
and IDs of opponents you want to create a chat with.
int assistantId = 34;
ArrayList<Integer> occupantIdsList = new ArrayList<Integer>();
occupantIdsList.add(assistantId);
occupantIdsList.add(45);
occupantIdsList.add(55);
QBChatDialog dialog = new QBChatDialog();
dialog.setName("Dialog with assistant");
dialog.setType(QBDialogType.GROUP);
dialog.setOccupantsIds(occupantIdsList);
QBRestChatService.createChatDialog(dialog).performAsync(new QBEntityCallback<QBChatDialog>() {
@Override
public void onSuccess(QBChatDialog result, Bundle bundle) {
}
@Override
public void onError(QBResponseException exception) {
}
});
val assistantId = 34
val occupantIdsList = ArrayList<Int>()
occupantIdsList.add(assistantId)
occupantIdsList.add(45)
occupantIdsList.add(55)
val dialog = QBChatDialog()
dialog.name = "Dialog with assistant"
dialog.type = QBDialogType.GROUP
dialog.setOccupantsIds(occupantIdsList)
QBRestChatService.createChatDialog(dialog).performAsync(object : QBEntityCallback<QBChatDialog> {
override fun onSuccess(result: QBChatDialog?, bundle: Bundle?) {
}
override fun onError(exception: QBResponseException?) {
}
})
JavaScript
To create a group dialog for a predefined number of occupants, you need to set the dialog type to 2
and IDs of opponents, you want to create a chat with.
const assistantId = 34;
const params = {
type: 2,
occupants_ids: [assistantId, 45, 55],
name: "Dialog with assistant"
};
QB.chat.dialog.create(params, function(error, dialog) {});
ReactNative
To create a group dialog for a predefined number of occupants, you need to set the dialog type to QB.chat.DIALOG_TYPE.GROUP_CHAT
and IDs of opponents you want to create a chat with.
const assistantId = 34;
const params = {
type: QB.chat.DIALOG_TYPE.GROUP_CHAT,
name: 'Dialog with assistant',
occupantsIds: [assistantId, 45, 55]
};
QB.chat
.createDialog(params)
.then(function (dialog) {
})
.catch(function (e) {
});
Flutter
To create a group dialog for a predefined number of occupants, you need to set the dialog type to QBChatDialogTypes.GROUP_CHAT
and IDs of opponents you want to create a chat with.
int assistantId = 34;
List<int> occupantIds = [assistantId, 45, 55];
String dialogName = "Dialog with assistant";
int dialogType = QBChatDialogTypes.GROUP_CHAT;
try {
QBDialog? createdDialog = await QB.chat.createDialog(occupantIds, dialogName, dialogType: dialogType);
} on PlatformException catch (e) {
}
Send message to assistant in group dialog with command
To be able to interact with an assistant in a group dialog next conditions should be met:
- Enable SmartChat Assistant for the group dialogs on the dasboard.
- Define the command for the assistant on the dashboard.
- SmartChat Assistant must be added to the group dialog and be present in the
occupant_ids
. - Your message must begin with a command.
For example, you defined your SmartChat Assistant command as "SuperHelpfulAssistant".
In this case, your message may look like:
/SuperHelpfulAssistant Help me with something
Send message to assistant in a group dialog with mentions
To be able to interact with an assistant in a group dialog next conditions should be met:
- Enable SmartChat Assistant for the group dialogs on the dasboard.
- SmartChat Assistant must be added to the group dialog and be present in the
occupant_ids
. - The message must contain the assistant's user ID in the
mentioned_user_ids
custom field.
If you want mention several users you must enumerate them joined by comma(,).
Example:
"34,45,55"
iOS
let message = QBChatMessage()
message.text = "Hi"
message.customParameters["save_to_history"] = true
message.customParameters["mentioned_user_ids"] = "34"
let dialog = ...
dialog.send(message) { (error) in
}
QBChatMessage *message = [[QBChatMessage alloc] init];
message.text = @"Hi";
message.customParameters[@"save_to_history"] = @"1";
message.customParameters[@"mentioned_user_ids"] = @"34";
QBChatDialog *dialog = ...;
[dialog sendMessage:message completionBlock:^(NSError * _Nullable error) {
}];
Android
QBChatMessage chatMessage = new QBChatMessage();
chatMessage.setSaveToHistory(true);
chatMessage.setBody("Hi");
chatMessage.setProperty("mentioned_user_ids", "34");
qbChatDialog.sendMessage(chatMessage, new QBEntityCallback<Void>() {
@Override
public void onSuccess(Void void, Bundle bundle) {
}
@Override
public void onError(QBResponseException exception) {
}
});
val chatMessage = QBChatMessage()
chatMessage.setSaveToHistory(true)
chatMessage.body = "Hi"
chatMessage.setProperty("mentioned_user_ids", "34")
qbChatDialog.sendMessage(chatMessage, object : QBEntityCallback<Void> {
override fun onSuccess(aVoid: Void?, bundle: Bundle?) {
}
override fun onError(exception: QBResponseException?) {
}
})
JavaScript
var message = {
type: "groupchat",
body: "Hi",
extension: {
save_to_history: 1,
mentioned_user_ids: "34"
},
};
try {
QB.chat.send(jidOrUserId, message);
} catch (e) {
if (e.name === "ChatNotConnectedError") {
}
}
ReactNative
const message = {
dialogId: 'dsfsd934329hjhkda98793j2',
body: 'H1',
properties: {
mentioned_user_ids: "34"
},
saveToHistory: true
};
QB.chat
.sendMessage(message)
.then(function () { })
.catch(function (e) { })
Flutter
String dialogId = "dsfs9344349hjkdsda9877932j2";
String body: 'Hi';
bool saveToHistory = true;
Map<String, String> properties = Map();
properties["mentioned_user_ids"] = "34";
try {
await QB.chat.sendMessage(dialogId, body: body, saveToHistory: saveToHistory, properties: properties);
} on PlatformException catch (e) {
}
Updated 11 months ago