Sendbird Desk permet un engagement client fort grâce à une assistance en direct dans l'application. Le SDK Desk vous permet d'initialiser, de configurer et d'intégrer facilement des fonctionnalités liées au support client dans vos applications Android.
Sendbird Desk est un plugin de la plateforme de chat Sendbird pour la gestion des tickets, et tous les événements Desk sont gérés via le SDK Chat.
Chaque ticket se voit attribuer des agents appropriés et sera dirigé vers un canal de groupe de discussion, qui implémente la messagerie en temps réel sur les tickets avec le SDK Sendbird Chat.
Voici quelques-uns des principaux composants du SDK Desk.
Expéditeur | Sous-types | |
---|---|---|
Message utilisateur | Agent ou client | Messages riches |
Message de l'administrateur | Envoyé depuis le serveur Desk sans expéditeur spécifique | Messages de notification et messages système |
Remarque : les messages enrichis sont en outre classés en aperçu d'URL, demande de confirmation de clôture du ticket et messages de demande de commentaires.
Pour en savoir plus sur le SDK Sendbird Desk pour Android, consultez la documentation Desk SDK pour Android. Si vous avez des commentaires ou des questions concernant les bugs et les demandes de fonctionnalités, visitez la communauté Sendbird.
Cette section présente les conditions préalables que vous devez vérifier pour utiliser le SDK Sendbird Desk pour Android.
Android 5.0 (API level 21) or higher
Java 8 or higher
Support androidx only
Android Gradle plugin 4.0.1 or higher
Sendbird Chat SDK for Android 4.0.3 and later
Cette section vous donne les informations dont vous avez besoin pour démarrer avec Sendbird Desk SDK pour Android.
Notre exemple d'application présente les fonctionnalités de base du SDK Sendbird Desk. Téléchargez l'application depuis notre référentiel GitHub pour avoir une idée de ce que vous pouvez faire avec le SDK actuel et pour commencer à créer votre propre projet.
Une application Sendbird comprend tout ce qui est requis dans un service de chat, y compris les utilisateurs, les messages et les canaux. Pour créer une application :
Quelle que soit la plateforme, une seule application Sendbird peut être intégrée par application ; cependant, l'application prend en charge la communication sur toutes les plates-formes fournies par Sendbird sans aucune configuration supplémentaire.
Remarque : Toutes les données sont limitées à la portée d'une seule application, les utilisateurs de différentes applications Sendbird ne peuvent donc pas discuter entre eux.
L'installation du SDK Chat est simple si vous êtes habitué à utiliser des bibliothèques ou des SDK externes. Tout d’abord, ajoutez le code suivant à votre fichier racine build.gradle
:
allprojects {
repositories {
.. .
maven { url " https://repo.sendbird.com/public/maven " }
}
}
Remarque : assurez-vous que le bloc de code ci-dessus n'est pas ajouté au fichier
bundle.gradle
de votre module.
Ensuite, ajoutez la dépendance au fichier build.gradle
de niveau supérieur du projet.
dependencies {
implementation ' com.sendbird.sdk:sendbird-desk-android-sdk:1.1.4 '
}
Remarque : les versions
1.0.12
ou inférieures du SDK Desk peuvent être téléchargées depuis JCenter jusqu'au 1er février 2022. Les versions du SDK supérieures à1.0.12
seront disponibles sur le référentiel distant de Sendbird.
Vous pouvez également télécharger le SDK Desk à partir de ce référentiel. Copiez le SDK Desk dans votre dossier libs/
et assurez-vous d'inclure également la bibliothèque dans votre fichier build.gradle
.
Une fois l'installation terminée, un ticket peut être créé pour la communication entre un agent et un client. Suivez les instructions étape par étape ci-dessous pour créer votre premier ticket.
Tout d'abord, une instance « SendBirdDesk » doit être initialisée lors du lancement d'une application client. Appelez SendbirdChat.init()' et 'SendBirdDesk.init()' sur 'Application.onCreate()'. Le SendbirdChat.init() doit d'abord être initialisé par l'APP_ID de votre application Sendbird dans le tableau de bord.
public class MyApplication extends Application {
@ Override
public void onCreate () {
super . onCreate ();
final InitParams initParams = new InitParams ( APP_ID , this , false );
SendbirdChat . init ( initParams , new InitResultHandler () {
@ Override
public void onMigrationStarted () {
}
@ Override
public void onInitFailed ( SendbirdException e ) {
// If initializing fails, this method is called.
}
@ Override
public void onInitSucceed () {
// If initializing is successful, this method is called and you can proceed to the next step.
// You can use all Sendbird APIs, including Connect, after init is completed in your app.
SendBirdDesk . init ();
}
});
}
}
Remarque : le même
APP_ID
doit être utilisé pour les SDK Desk et Chat. Si vous lancez Sendbird Desk avec une instance Sendbird d'un autreApp_ID
, toutes les données existantes dans l'application client seront effacées.
Il est possible d'utiliser uniquement le SDK Chat ou les SDK Chat et Desk ensemble dans votre application client en fonction du service de chat que vous souhaitez fournir.
SDK | Utilisé pour |
---|---|
SDK de discussion | Messagerie intégrée à l'application où les clients peuvent discuter entre eux. |
SDK de chat et de bureau | Billets où les clients peuvent discuter avec des agents. |
public class MyApplication extends Application {
@ Override
public void onCreate () {
super . onCreate ();
final InitParams initParams = new InitParams ( APP_ID , this , false );
SendbirdChat . init ( initParams , new InitResultHandler () {
@ Override
public void onMigrationStarted () {
}
@ Override
public void onInitFailed ( SendbirdException e ) {
// If initializing fails, this method is called.
}
@ Override
public void onInitSucceed () {
// If initializing is successful, this method is called and you can proceed to the next step.
// You can use all Sendbird APIs, including Connect, after init is completed in your app.
SendBirdDesk . init ();
}
});
}
}
Les clients peuvent demander de l'aide via différents types de canaux : chats intégrés à l'application ou réseaux sociaux tels que Facebook, Instagram et Twitter. Pour utiliser ces fonctionnalités de prise en charge du SDK Desk, l'instance SendBirdDesk
doit être connectée au serveur Sendbird en fonction du canal d'où provient la demande :
authenticate()
avec leurs identifiants utilisateur.Une fois authentifiés, les clients peuvent discuter en direct avec des agents basés sur la plateforme Sendbird Chat.
SendbirdChat . connect ( userId , accessToken , new ConnectHandler () {
@ Override
public void onConnected ( User user , SendbirdException e ) {
if ( e != null ) { // error.
return ;
}
// Use the same user Id and access token used in the SendbirdChat.connect().
SendBirdDesk . authenticate ( userId , accessToken , new SendBirdDesk . AuthenticateHandler () {
@ Override
public void onResult ( SendbirdException e ) {
if ( e != null ) { //error.
return ;
}
// SendBirdDesk is now initialized, and the customer is authenticated.
}
});
}
});
Remarque : Les clients de la plateforme Sendbird Chat désignent les utilisateurs déjà authentifiés avec le SDK Chat. Si vous implémentez le SDK Chat et le SDK Desk en même temps, connectez d'abord un utilisateur au serveur Sendbird avec son ID utilisateur et son jeton d'accès.
Implémentez la méthode Ticket.create()
pour créer un nouveau ticket avant ou après le message initial du client.
Ticket . create ( ticketTitle , userName , new Ticket . CreateHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // error
return ;
}
// The ticket is created. Agents and customers can chat with each other by sending a message through the ticket.getChannel().sendUserMessage() or sendFileMessage().
}
});
Une fois qu'un ticket est créé avec succès sur le serveur Sendbird, vous pouvez accéder au ticket et à son canal dans ticket.getChannel()
via le rappel du serveur.
Avant qu'un client envoie le premier message, les agents ne peuvent pas voir le ticket dans le tableau de bord et l'attribution du ticket n'a pas lieu. Lorsque la conversation démarre, le ticket est attribué à un agent disponible par le tableau de bord du bureau tandis que les messages sont envoyés et reçus via le SDK Chat.
Vous pouvez utiliser les paramètres suivants lors de la création d'un ticket.
Remarque : Seuls Groupkey et customFields doivent être définis et ne sont accessibles que depuis le tableau de bord.
Argument | Taper | Description |
---|---|---|
TICKET_TITLE | chaîne | Spécifie le titre du ticket. |
NOM D'UTILISATEUR | chaîne | Spécifie le nom de l'utilisateur qui soumet ou reçoit le ticket. |
GROUP_KEY | chaîne | Spécifie l'identifiant d'une équipe spécifique. |
champs personnalisés | objet imbriqué | Spécifie des informations supplémentaires sur le ticket composées d’éléments personnalisés clé-valeur . Seuls les champs personnalisés déjà enregistrés dans Paramètres > Champs de ticket dans votre tableau de bord peuvent être utilisés comme clé. |
PRIORITÉ | chaîne | Spécifie la valeur de priorité du ticket. Des valeurs plus élevées correspondent à une priorité plus élevée. Les valeurs valides sont LOW , MEDIUM , HIGH et URGENT . |
RELATED_CHANNEL_URLS | tableau | Spécifie les canaux de groupe dans la plateforme Sendbird Chat qui sont liés à ce ticket et se composent d'URL de canal et de noms de canal. Jusqu'à 3 canaux associés peuvent être ajoutés. |
Map < String , String > customFields = new HashMap <>();
customFields . put ( "product" , "desk" );
customFields . put ( "line" , "14" );
customFields . put ( "select" , "option2" );
Ticket . create ( TICKET_TITLE , USER_NAME ,
"cs-team-1" , // GROUP_KEY
customFields , // CUSTOM_FIELDS
PRIORITY ,
RELATED_CHANNEL_URLS ,
new Ticket . CreateHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// The ticket is created with parameters.
}
}
);
Cette section détaille la procédure pour gérer et clôturer un ticket depuis votre application client.
Utilisez la méthode ticket.setCustomFields()
pour ajouter des informations supplémentaires sur un ticket spécifique.
Map < String , String > customFields = new HashMap <>();
customFields . put ( "product" , "Desk" );
customFields . put ( "line" , String . valueOf ( 30 ));
ticket . setCustomFields ( customFields , new Ticket . SetCustomFieldHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// Custom fields for the ticket are set.
// Some fields can be ignored if their keys aren't registered in the dashboard.
}
});
Remarque : Seuls les champs personnalisés enregistrés dans Bureau > Paramètres > Champs de ticket de votre tableau de bord peuvent être utilisés comme clé.
Utilisez la méthode setCustomerCustomFields()
de 'SendBirdDesk' pour inciter vos clients à ajouter des informations supplémentaires sur eux-mêmes.
Remarque : Seuls les champs personnalisés enregistrés dans Bureau > Paramètres > Champs Client de votre tableau de bord peuvent être utilisés comme clé.
Map < String , String > customFields = new HashMap <>();
customFields . put ( "gender" , "female" );
customFields . put ( "age" , String . valueOf ( 30 ));
SendBirdDesk . setCustomerCustomFields ( customFields , new SendBirdDesk . SetCustomerCustomFieldsHandler () {
@ Override
public void onResult ( SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// Custom fields for the customer are set.
// Some fields can be ignored if their keys aren't registered in the dashboard.
}
});
Utilisez la méthode setCustomerCustomFields()
de SendBirdDesk
pour inciter vos clients à ajouter des informations supplémentaires sur eux-mêmes.
Remarque : Seuls les champs personnalisés enregistrés dans Paramètres > Champs Client de votre tableau de bord peuvent être utilisés comme clé.
Map < String , String > customFields = new HashMap <>();
customFields . put ( "gender" , "female" );
customFields . put ( "age" , String . valueOf ( 30 ));
SendBirdDesk . setCustomerCustomFields ( customFields , new SendBirdDesk . SetCustomerCustomFieldsHandler () {
@ Override
public void onResult ( SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// Custom fields for the customer are set.
// Some fields can be ignored if their keys aren't registered in the dashboard.
}
});
Les canaux associés indiquent les canaux de groupe dans la plateforme Sendbird Chat qui sont liés à un ticket. Lors de la création d'un ticket, transmettez les channel_url
des canaux de groupe associés comme argument au paramètre relatedChannelUrls
dans la méthode Ticket.create()
. Pour mettre à jour les canaux associés, utilisez plutôt ticket.setRelatedChannelUrls()
. La propriété ticket.relatedChannels
dans le rappel indique l'objet de canal de groupe des canaux associés et contient les noms de canaux et leurs URL.
ticket . setRelatedChannelUrls ( RELATED_CHANNEL_URLS , new Ticket . SetRelatedChannelUrlsHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// The ticket.relatedChannels property has been updated.
}
});
Remarque : Jusqu'à 3 chaînes associées peuvent être ajoutées par ticket.
Grâce aux aperçus d'URL, les utilisateurs de votre application peuvent répondre à leurs attentes quant à ce qu'ils vont obtenir avant d'ouvrir le lien pendant les conversations.
Pour prévisualiser les URL, chaque message texte doit être vérifié s'il contient des URL. Lorsqu'un message texte comprenant une URL est envoyé avec succès, l'URL doit être extraite et transmise au serveur Sendbird à l'aide de la méthode getUrlPreview()
. Définissez les données analysées reçues du serveur en tant qu'objet JSON
et stringifiez l'objet pour le transmettre comme argument à un paramètre dans la méthode updateUserMessage()
. Ensuite, le message mis à jour avec un aperçu de l'URL est transmis aux applications clientes via la méthode onMessageUpdated()
du gestionnaire d'événements de canal.
ticket . getChannel (). sendUserMessage ( TEXT , new UserMessageHandler () {
@ Override
public void onResult ( UserMessage userMessage , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
List < String > urls = extractUrlsFromMessage ( userMessage . getMessage ());
if ( urls . size () > 0 ) {
String strUrlPreview = toJsonString ( getOGTagsWithUrl ( urls . get ( 0 )));
UserMessageUpdateParams updateParams = new UserMessageUpdateParams ( TEXT );
updateParams . setData ( strUrlPreview );
updateParams . setCustomType ( "SENDBIRD_DESK_RICH_MESSAGE" );
ticket . getChannel (). updateUserMessage ( userMessage . getMessageId (), updateParams , new UserMessageHandler () {
@ Override
public void onResult ( UserMessage userMessage , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
}
}
});
Remarque : accédez à la page Github et reportez-vous aux classes
updateUserMessageWithUrl()
etUrlPreviewAsyncTask
dans l'exemple de code. Vous aurez une idée sur la façon d'implémenter des méthodes dans l'exemple de code ci-dessus, telles queextractUrlsFromMessage()
,getOGTagsWithUrl()
ettoJsonString()
, qui ne sont pas du code réel mais destinés à vous aider à comprendre le flux global à utiliser. Aperçus d'URL.
Dans la méthode onMessageUpdated()
du gestionnaire d'événements de canal, vous pouvez trouver les données pour l'aperçu de l'URL dans la propriété message.data
comme ci-dessous.
{
"type" : " SENDBIRD_DESK_URL_PREVIEW " ,
"body" : {
"url" : " https://sendbird.com/ " ,
"site_name" : " Sendbird " ,
"title" : " Sendbird - A Complete Chat Platform, Messaging and Chat SDK and API " ,
"description" : " Sendbird's chat, voice and video APIs and SDKs connect users through immersive, modern communication solutions that drive better user experiences and engagement. " ,
"image" : " https://6cro14eml0v2yuvyx3v5j11j-wpengine.netdna-ssl.com/wp-content/uploads/sendbird_thumbnail.png "
}
}
Les messages d'administration sont des messages personnalisables envoyés par le système. Il existe 2 types de messages d'administration. Les notifications sont des messages envoyés et affichés aux clients et aux agents, tels que des messages de bienvenue ou des messages de retard. Les messages système sont des messages envoyés et affichés aux agents dans la vue Détails du ticket lorsqu'un ticket présente des modifications, telles que des modifications du statut du ticket et du responsable.
Remarque : Vous pouvez personnaliser les notifications dans Bureau > Paramètres > Déclencheurs et les messages système dans Bureau > Paramètres > Messages système dans votre tableau de bord.
Lorsque l'application client reçoit le message via la méthode 'onMessageReceived()' du gestionnaire d'événements de canal, les messages système se distinguent des messages de notification par la valeur de message.custom_type
, et leur sous-type est spécifié dans message.data
comme ci-dessous.
{
"message_id" : 40620745 ,
"type" : " ADMM " ,
"custom_type" : " SENDBIRD_DESK_ADMIN_MESSAGE_CUSTOM_TYPE " ,
"data" : " { " type " : " SYSTEM_MESSAGE_TICKET_ASSIGNED_BY_SYSTEM " , " ticket " : <Ticket Object>} " ,
"message" : " The ticket is automatically assigned to Cindy. "
}
Remarque : Le
transfer
apparaît uniquement lorsque lesdata
ontSYSTEM_MESSAGE_TICKET_TRANSFERRED_BY_AGENT
.
Les messages système sont destinés à être affichés uniquement pour les agents. Reportez-vous à l'exemple de code suivant pour éviter de les afficher à vos clients.
public static boolean isVisible ( BaseMessage message ) {
if ( message instanceof AdminMessage ) {
String data = message . getData ();
if (! TextUtils . isEmpty ( data )) {
String customType = message . getCustomType ();
boolean isSystemMessage = ADMIN_MESSAGE_CUSTOM_TYPE . equals ( customType );
JsonObject dataObj = new JsonParser (). parse ( data ). getAsJsonObject ();
String type = dataObj . get ( "type" ). getAsString ();
return ! isSystemMessage
&& ! EVENT_TYPE_ASSIGN . equals ( type )
&& ! EVENT_TYPE_TRANSFER . equals ( type )
&& ! EVENT_TYPE_CLOSE . equals ( type );
}
}
return true ;
}
Bien que les administrateurs soient autorisés à fermer directement un ticket, les agents peuvent soit fermer un ticket comme le font les administrateurs, soit demander aux clients s'ils doivent fermer un ticket, en fonction du paramètre d'autorisation de l'agent. Le message de demande de confirmation peut avoir 3 types d’état comme ci-dessous.
État | Description |
---|---|
EN ATTENDANT | Défini lorsqu'un agent envoie un message de demande de confirmation. |
CONFIRMÉ | Définir le moment où un client accepte de fermer le ticket. (Par défaut : vrai ) |
REFUSÉ | Défini lorsqu'un client refuse de fermer le ticket. (Par défaut : faux ) |
Lorsqu'un client répond au message, la réponse vrai (d'accord) ou faux (refus) est envoyée au serveur Sendbird comme CONFIRMED
ou DECLINED
en appelant la méthode Ticket.confirmEndOfChat()
.
ticket . confirmEndOfChat ( USER_MESSAGE , true | false , new Ticket . ConfirmEndOfChatHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// You can update the UI of the message. For example, you can hide YES and No buttons.
}
});
{
"type" : " SENDBIRD_DESK_INQUIRE_TICKET_CLOSURE " ,
"body" : {
"state" : " CONFIRMED "
}
}
Vous pouvez envoyer un message aux clients juste après la fermeture d'un ticket pour leur demander s'ils sont satisfaits du support fourni via le ticket. Lorsque la fonction d'évaluation de la satisfaction client est activée dans votre tableau de bord, les clients recevront un message leur demandant de donner une note et de laisser un commentaire en guise de feedback. Le message peut avoir 2 états comme ci-dessous.
État | Description |
---|---|
EN ATTENDANT | Défini lorsqu'un agent envoie un message de demande de commentaires client. |
CONFIRMÉ | Définir le moment où un client envoie une réponse. |
Lorsqu'un client répond au message, son score et son commentaire pour le ticket sont envoyés au serveur Desk en appelant la méthode ticket.submitFeedback()
. Ensuite, l'état du message de demande de confirmation passe à CONFIRMED
.
ticket . submitFeedback ( USER_MESSAGE , SCORE , COMMENT , net Ticket . SubmitFeedbackHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Le serveur Sendbird Desk informe l'application client du client des mises à jour via la méthode onMessageUpdate()
du gestionnaire d'événements de canal.
public void onMessageUpdated ( final BaseChannel channel , final BaseMessage message ) {
Ticket . getByChannelUrl ( channel . getUrl (), new Ticket . GetByChannelUrlHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) return ;
String data = message . getData ();
if (! TextUtils . isEmpty ( data )) {
JsonObject dataObj = new JsonParser (). parse ( data ). getAsJsonObject ();
String type = dataObj . get ( "type" ). getAsString ();
boolean isFeedbackMessage = "SENDBIRD_DESK_CUSTOMER_SATISFACTION" . equals ( type );
if ( isFeedbackMessage ) {
JsonObject feedback = dataObj . get ( "body" ). getAsJsonObject ();
String state = feedback . get ( "state" ). getAsString ();
switch ( state ) {
case "CONFIRMED" :
// TODO: Implement your code for the UI when there is a response from the customer.
break ;
case "WAITING" :
// TODO: Implement your code for the UI when there is no response from the customer.
break ;
}
}
}
}
});
}
Remarque : Vous pouvez trouver l'objet
JSON
stringifié suivant dans la propriétémessage.data
dans la méthodeonMessageUpdate()
du gestionnaire d'événements de canal.
{
"type" : " SENDBIRD_DESK_CUSTOMER_SATISFACTION " ,
"body" : {
"state" : " CONFIRMED " ,
"customerSatisfactionScore" : 3 ,
"customerSatisfactionComment" : " It was really helpful :) "
}
}
Un ticket fermé peut être rouvert en utilisant la méthode reopen()
dans Ticket
.
ticket . reopen ( new Ticket . ReopenHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Vous pouvez récupérer une liste des tickets ouverts et fermés du client actuel en utilisant Ticket.getOpenedList()
et Ticket.getClosedList()
.
Vous pouvez concevoir une activité de boîte de réception pour l’historique des tickets ouverts et fermés pour votre client. Zéro est une bonne valeur de départ, puis un maximum de 10 tickets seront renvoyés pour chaque appel par ordre décroissant de l'heure de création du dernier message.
Remarque : Seuls 10 tickets peuvent être récupérés par requête par heure de création du message par ordre décroissant.
// getOpenedList()
Ticket . getOpenedList ( OFFSET , new Ticket . GetOpenedListHandler () {
@ Override
public void onResult ( List < Ticket > tickets , boolean hasNext , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// offset += tickets.size(); for the next tickets.
// TODO: Implement your code to display the ticket list.
}
});
// getClosedList()
Ticket . getClosedList ( OFFSET , new Ticket . GetClosedListHandler () {
@ Override
public void onResult ( List < Ticket > tickets , boolean hasNext , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// offset += tickets.size(); for the next tickets.
// TODO: Implement your code to display the ticket list.
}
});
Pour les tickets définis avec des champs personnalisés, vous pouvez ajouter un filtre à getOpenList()
et getClosedList()
pour trier les tickets par clés et valeurs de champs personnalisés.
Map < String , String > customFieldFilter = new HashMap <>();
customFieldFilter . put ( "subject" , "doggy_doggy" );
Ticket . getOpenedList ( OFFSET , customFieldFilter , new Ticket . GetOpenedListHandler () {
@ Override
public void onResult ( List < Ticket > tickets , boolean hasNext , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
List < Ticket > openedTicket = tickets ;
// offset += tickets.length; for the next tickets.
// TODO: Implement your code to display the ticket list.
}
});
Vous pouvez récupérer un ticket spécifique avec l'URL de sa chaîne.
Ticket . getByChannelUrl ( channel . getUrl (), new Ticket . GetByChannelUrlHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Vous pouvez afficher le nombre de tickets ouverts sur votre application client en utilisant Ticket.getOpenCount()
.
Ticket . getOpenCount ( new Ticket . GetOpenCountHandler () {
@ Override
public void onResult ( int count , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// TODO: Implement your code with the result value.
}
});
Utilisez la méthode ticket.close()
pour permettre aux clients de fermer directement un ticket sur leur application client afin que les agents puissent rapidement passer à d'autres demandes de clients sans délai ni confirmation du client.
ticket . close ( CLOSE_COMMENT , new Ticket . CloseHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
// TODO: Implement your code to close a ticket.
}
});
En cas d'échec d'une requête API, le paramètre SendbirdException
dans un gestionnaire contiendra les informations sur l'erreur.
Propriété | Description |
---|---|
code | SendBirdError.ERR_REQUEST_FAILED (800220) |
message | Message d'erreur détaillé avec code d'erreur spécifique, s'il existe. |