Sendbird Desk ermöglicht eine starke Kundenbindung durch Live-In-App-Support. Mit dem Desk SDK können Sie ganz einfach kundensupportbezogene Funktionen initialisieren, konfigurieren und in Ihre Android-Anwendungen integrieren.
Sendbird Desk ist ein Plugin der Sendbird Chat-Plattform zur Verwaltung von Tickets. Alle Desk-Ereignisse werden über das Chat SDK abgewickelt.
Jedem Ticket werden entsprechende Agenten zugewiesen und es wird an den Gruppenkanal eines Chats weitergeleitet, der Echtzeit-Nachrichten zu Tickets mit dem Sendbird Chat SDK implementiert.
Dies sind einige der Hauptkomponenten des Desk SDK.
Absender | Untertypen | |
---|---|---|
Benutzernachricht | Agent oder Kunde | Reichhaltige Botschaften |
Admin-Nachricht | Wird vom Desk-Server ohne bestimmten Absender gesendet | Benachrichtigungsmeldungen und Systemmeldungen |
Hinweis : Rich-Nachrichten werden weiter in URL-Vorschau, Bestätigungsanfrage für den Ticketabschluss und Feedback-Anfragenachrichten unterteilt.
Erfahren Sie mehr über Sendbird Desk SDK für Android im Desk SDK für Android-Dokument. Wenn Sie Kommentare oder Fragen zu Fehlern und Funktionswünschen haben, besuchen Sie die Sendbird-Community.
In diesem Abschnitt werden die Voraussetzungen aufgeführt, die Sie überprüfen müssen, um Sendbird Desk SDK für Android verwenden zu können.
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
In diesem Abschnitt finden Sie Informationen, die Sie für den Einstieg in das Sendbird Desk SDK für Android benötigen.
Unsere Beispiel-App demonstriert die Kernfunktionen des Sendbird Desk SDK. Laden Sie die App aus unserem GitHub-Repository herunter, um eine Vorstellung davon zu bekommen, was Sie mit dem eigentlichen SDK machen können, und um mit der Erstellung Ihres eigenen Projekts zu beginnen.
Eine Sendbird-Anwendung umfasst alles, was für einen Chat-Dienst erforderlich ist, einschließlich Benutzer, Nachrichten und Kanäle. So erstellen Sie eine Anwendung:
Unabhängig von der Plattform kann pro App nur eine Sendbird-Anwendung integriert werden; Die Anwendung unterstützt jedoch die Kommunikation über alle von Sendbird bereitgestellten Plattformen ohne zusätzliche Einrichtung.
Hinweis : Alle Daten sind auf den Umfang einer einzelnen Anwendung beschränkt, sodass Benutzer in verschiedenen Sendbird-Anwendungen nicht miteinander chatten können.
Die Installation des Chat SDK ist einfach, wenn Sie mit der Verwendung externer Bibliotheken oder SDKs vertraut sind. Fügen Sie zunächst den folgenden Code zu Ihrer Root- Datei build.gradle
hinzu:
allprojects {
repositories {
.. .
maven { url " https://repo.sendbird.com/public/maven " }
}
}
Hinweis : Stellen Sie sicher, dass der obige Codeblock nicht zu Ihrer Modul-
bundle.gradle
Datei hinzugefügt wird.
Fügen Sie dann die Abhängigkeit zur Datei build.gradle
der obersten Ebene des Projekts hinzu.
dependencies {
implementation ' com.sendbird.sdk:sendbird-desk-android-sdk:1.1.4 '
}
Hinweis : Desk SDK-Versionen
1.0.12
oder niedriger können bis zum 1. Februar 2022 von JCenter heruntergeladen werden. SDK-Versionen höher als1.0.12
werden im Remote-Repository von Sendbird verfügbar sein.
Alternativ können Sie das Desk SDK von diesem Repository herunterladen. Kopieren Sie das Desk SDK in Ihren libs/
-Ordner und stellen Sie sicher, dass Sie die Bibliothek auch in Ihre build.gradle
Datei aufnehmen.
Nach Abschluss der Installation kann ein Ticket für die Kommunikation zwischen Agent und Kunde erstellt werden. Befolgen Sie die nachstehenden Schritt-für-Schritt-Anleitungen, um Ihr erstes Ticket zu erstellen.
Zunächst muss beim Starten einer Client-App eine „SendBirdDesk“-Instanz initialisiert werden. Rufen Sie „SendbirdChat.init()“ und „SendBirdDesk.init()“ für „Application.onCreate()“ auf. Die SendbirdChat.init() sollte zuerst durch die APP_ID Ihrer Sendbird-Anwendung im Dashboard initialisiert werden.
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 ();
}
});
}
}
Hinweis : Für Desk- und Chat-SDKs sollte dieselbe
APP_ID
verwendet werden. Wenn Sie den Sendbird Desk mit einer Sendbird-Instanz einer anderenApp_ID
initiieren, werden alle vorhandenen Daten in der Client-App gelöscht.
Je nachdem, welchen Chat-Dienst Sie bereitstellen möchten, können Sie in Ihrer Client-App nur das Chat-SDK oder beide Chat- und Desk-SDKs zusammen verwenden.
SDK | Verwendet für |
---|---|
Chat-SDK | In-App-Messenger, über den Kunden miteinander chatten können. |
Chat- und Desk-SDKs | Tickets, über die Kunden mit Agenten chatten können. |
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 ();
}
});
}
}
Kunden können Support über verschiedene Arten von Kanälen anfordern: In-App-Chats oder soziale Medien wie Facebook, Instagram und Twitter. Um diese Supportfunktionen des Desk SDK nutzen zu können, sollte die SendBirdDesk
-Instanz mit dem Sendbird-Server verbunden sein, je nachdem, von welchem Kanal die Anfrage kommt:
authenticate()
mit ihren Benutzer-IDs.Nach der Authentifizierung können Kunden auf Basis der Sendbird Chat-Plattform live mit Agenten chatten.
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.
}
});
}
});
Hinweis : Kunden der Sendbird Chat-Plattform sind Benutzer, die bereits mit dem Chat SDK authentifiziert sind. Wenn Sie Chat SDK und Desk SDK gleichzeitig implementieren, verbinden Sie einen Benutzer zuerst mit seiner Benutzer-ID und seinem Zugriffstoken mit dem Sendbird-Server.
Implementieren Sie die Methode Ticket.create()
um entweder vor oder nach der ersten Nachricht des Kunden ein neues Ticket zu erstellen.
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().
}
});
Sobald ein Ticket erfolgreich auf dem Sendbird-Server erstellt wurde, können Sie über den Rückruf vom Server auf das Ticket und seinen Kanal in der ticket.getChannel()
zugreifen.
Bevor ein Kunde die erste Nachricht sendet, können Agenten das Ticket nicht im Dashboard sehen und es findet keine Ticketzuweisung statt. Wenn das Gespräch beginnt, wird das Ticket vom Desk Dashboard einem verfügbaren Agenten zugewiesen, während Nachrichten über das Chat SDK gesendet und empfangen werden.
Beim Erstellen eines Tickets können Sie die folgenden Parameter verwenden.
Hinweis : Nur Groupkey und customFields müssen definiert werden und sind nur über das Dashboard zugänglich.
Argument | Typ | Beschreibung |
---|---|---|
TICKET_TITLE | Zeichenfolge | Gibt den Titel des Tickets an. |
USER_NAME | Zeichenfolge | Gibt den Namen des Benutzers an, der das Ticket sendet oder empfängt. |
GROUP_KEY | Zeichenfolge | Gibt die Kennung eines bestimmten Teams an. |
benutzerdefinierteFelder | verschachteltes Objekt | Gibt zusätzliche Informationen zum Ticket an, das aus benutzerdefinierten Schlüsselwertelementen besteht. Als Schlüssel können nur benutzerdefinierte Felder verwendet werden, die bereits in Ihrem Dashboard unter Einstellungen > Ticketfelder registriert sind. |
PRIORITÄT | Zeichenfolge | Gibt den Prioritätswert des Tickets an. Höhere Werte bedeuten eine höhere Priorität. Gültige Werte sind LOW , MEDIUM , HIGH und DRINGENT . |
RELATED_CHANNEL_URLS | Array | Gibt Gruppenkanäle in der Sendbird Chat-Plattform an, die sich auf dieses Ticket beziehen, und besteht aus Kanal-URLs und Kanalnamen. Es können bis zu 3 verwandte Kanäle hinzugefügt werden. |
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.
}
}
);
In diesem Abschnitt wird das Verfahren zum Bearbeiten und Schließen eines Tickets über Ihre Client-App beschrieben.
Verwenden Sie die Methode ticket.setCustomFields()
um zusätzliche Informationen zu einem bestimmten Ticket hinzuzufügen.
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.
}
});
Hinweis : Als Schlüssel können nur benutzerdefinierte Felder verwendet werden, die in Ihrem Dashboard unter „Schreibtisch“ > „Einstellungen“ > „Ticketfelder“ registriert sind.
Verwenden Sie die setCustomerCustomFields()
-Methode von „SendBirdDesk“, um Ihre Kunden dazu zu bringen, zusätzliche Informationen über sich selbst hinzuzufügen.
Hinweis : Als Schlüssel können nur benutzerdefinierte Felder verwendet werden, die in Ihrem Dashboard unter „Schreibtisch“ > „Einstellungen“ > „Kundenfelder“ registriert sind.
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.
}
});
Verwenden Sie die setCustomerCustomFields()
Methode von SendBirdDesk
um Ihre Kunden dazu zu bringen, zusätzliche Informationen über sich selbst hinzuzufügen.
Hinweis : Als Schlüssel können nur benutzerdefinierte Felder verwendet werden, die in Einstellungen > Kundenfelder Ihres Dashboards registriert sind.
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.
}
});
Verwandte Kanäle geben Gruppenkanäle in der Sendbird Chat-Plattform an, die mit einem Ticket verknüpft sind. Übergeben Sie beim Erstellen eines Tickets die „ channel_url
“ der zugehörigen Gruppenkanäle als Argument an den Parameter relatedChannelUrls
in der Methode „ Ticket.create()
. Um verwandte Kanäle zu aktualisieren, verwenden Sie stattdessen die Funktion ticket.setRelatedChannelUrls()
. Die Eigenschaft ticket.relatedChannels
im Rückruf gibt das Gruppenkanalobjekt verwandter Kanäle an und enthält Kanalnamen und deren URLs.
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.
}
});
Hinweis : Pro Ticket können bis zu 3 verwandte Kanäle hinzugefügt werden.
Mit URL-Vorschauen können Ihre Anwendungsbenutzer ihre Erwartungen an das, was sie erhalten, erfüllen, bevor sie den Link während der Konversationen öffnen.
Um eine Vorschau der URLs anzuzeigen, sollte jede Textnachricht darauf überprüft werden, ob sie URLs enthält. Wenn eine Textnachricht mit einer URL erfolgreich gesendet wurde, sollte die URL extrahiert und mithilfe der Methode getUrlPreview()
an den Sendbird-Server übergeben werden. Legen Sie die vom Server empfangenen geparsten Daten als JSON
Objekt fest und versehen Sie das Objekt mit einem String, um es als Argument an einen Parameter in der Methode updateUserMessage()
zu übergeben. Anschließend wird die aktualisierte Nachricht mit URL-Vorschau über die Methode onMessageUpdated()
des Kanalereignishandlers an die Client-Apps übermittelt.
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 ;
}
}
});
}
}
});
Hinweis : Gehen Sie zur Github-Seite und sehen Sie sich die Klassen
updateUserMessageWithUrl()
undUrlPreviewAsyncTask
im Beispielcode an. Sie erhalten eine Vorstellung davon, wie Sie Methoden im obigen Beispielcode implementieren, z. B.extractUrlsFromMessage()
,getOGTagsWithUrl()
undtoJsonString()
, bei denen es sich nicht um tatsächlichen Code handelt, sondern um Ihnen zu helfen, den zu verwendenden Gesamtablauf zu verstehen URL-Vorschauen.
In der onMessageUpdated()
Methode des Kanalereignishandlers finden Sie die Daten für die URL-Vorschau in der Eigenschaft message.data
wie unten dargestellt.
{
"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 "
}
}
Admin-Nachrichten sind anpassbare Nachrichten, die vom System gesendet werden. Es gibt zwei Arten von Admin-Nachrichten. Benachrichtigungen sind Nachrichten, die sowohl an Kunden als auch an Agenten gesendet und angezeigt werden, z. B. Willkommensnachrichten oder Verzögerungsnachrichten. Systemnachrichten sind Nachrichten, die an Agenten in der Ansicht „Ticketdetails“ gesendet und angezeigt werden, wenn an einem Ticket Änderungen vorgenommen wurden, beispielsweise Änderungen im Ticketstatus und beim Beauftragten.
Hinweis : Sie können Benachrichtigungen unter „Desk“ > „Einstellungen“ > „Auslöser“ und Systemnachrichten unter „Desk“ > „Einstellungen“ > „Systemnachrichten“ in Ihrem Dashboard anpassen.
Wenn die Client-App die Nachricht über die Methode „onMessageReceived()“ des Kanalereignishandlers empfängt, werden Systemnachrichten von Benachrichtigungsnachrichten durch den Wert von message.custom_type
unterschieden und ihr Untertyp wird in message.data
wie unten angegeben angegeben.
{
"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. "
}
Hinweis : Die
transfer
erfolgt nur, wenn diedata
SYSTEM_MESSAGE_TICKET_TRANSFERRED_BY_AGENT
haben.
Systemmeldungen sollen nur für Agenten angezeigt werden. Sehen Sie sich den folgenden Beispielcode an, um zu vermeiden, dass sie Ihren Kunden angezeigt werden.
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 ;
}
Während Administratoren die Berechtigung haben, ein Ticket direkt zu schließen, können Agenten je nach Agentenberechtigungseinstellung entweder ein Ticket wie Administratoren schließen oder Kunden fragen, ob sie ein Ticket schließen möchten. Die Bestätigungsanforderungsnachricht kann die folgenden drei Statustypen haben.
Zustand | Beschreibung |
---|---|
WARTEN | Wird festgelegt, wenn ein Agent eine Bestätigungsanforderungsnachricht sendet. |
BESTÄTIGT | Wird festgelegt, wenn ein Kunde dem Schließen des Tickets zustimmt. (Standard: true ) |
ABGELEHNT | Wird festgelegt, wenn ein Kunde das Schließen des Tickets ablehnt. (Standard: false ) |
Wenn ein Kunde auf die Nachricht antwortet, wird die Antwort wahr (zustimmen) oder falsch (ablehnen) als CONFIRMED
oder DECLINED
an den Sendbird-Server gesendet, indem die Methode Ticket.confirmEndOfChat()
aufgerufen wird.
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 "
}
}
Sie können direkt nach dem Schließen eines Tickets eine Nachricht an Kunden senden und fragen, ob sie mit dem durch das Ticket bereitgestellten Support zufrieden sind. Wenn die Funktion zur Kundenzufriedenheitsbewertung in Ihrem Dashboard aktiviert ist, erhalten Kunden eine Nachricht mit der Bitte, eine Bewertung abzugeben und einen Kommentar als Feedback zu hinterlassen. Die Nachricht kann wie folgt zwei Zustände haben.
Zustand | Beschreibung |
---|---|
WARTEN | Wird festgelegt, wenn ein Agent eine Kundenfeedback-Anforderungsnachricht sendet. |
BESTÄTIGT | Wird festgelegt, wenn ein Kunde eine Antwort sendet. |
Wenn ein Kunde auf die Nachricht antwortet, werden seine Bewertung und sein Kommentar für das Ticket durch Aufrufen der Methode ticket.submitFeedback()
an den Desk-Server gesendet. Anschließend wird der Status der Bestätigungsanforderungsnachricht in CONFIRMED
geändert.
ticket . submitFeedback ( USER_MESSAGE , SCORE , COMMENT , net Ticket . SubmitFeedbackHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Der Sendbird Desk-Server benachrichtigt die Client-App des Kunden über Aktualisierungen über die Methode onMessageUpdate()
des Kanalereignishandlers.
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 ;
}
}
}
}
});
}
Hinweis : Sie finden das folgende stringifizierte
JSON
Objekt in der Eigenschaftmessage.data
innerhalb der MethodeonMessageUpdate()
des Kanalereignishandlers.
{
"type" : " SENDBIRD_DESK_CUSTOMER_SATISFACTION " ,
"body" : {
"state" : " CONFIRMED " ,
"customerSatisfactionScore" : 3 ,
"customerSatisfactionComment" : " It was really helpful :) "
}
}
Ein geschlossenes Ticket kann mithilfe der reopen()
Methode im Ticket
erneut geöffnet werden.
ticket . reopen ( new Ticket . ReopenHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Mit Ticket.getOpenedList()
und Ticket.getClosedList()
können Sie eine Liste der offenen und geschlossenen Tickets des aktuellen Kunden abrufen.
Sie können eine Posteingangsaktivität für den Verlauf offener und geschlossener Tickets für Ihren Kunden entwerfen. Null ist ein guter Startwert, dann werden für jeden Anruf maximal 10 Tickets nach dem Zeitpunkt der letzten Nachrichtenerstellung in absteigender Reihenfolge zurückgegeben.
Hinweis : Pro Anfrage können nur 10 Tickets nach Erstellungszeitpunkt der Nachricht in absteigender Reihenfolge abgerufen werden.
// 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.
}
});
Für Tickets mit benutzerdefinierten Feldern können Sie getOpenList()
und getClosedList()
einen Filter hinzufügen, um Tickets nach Schlüsseln und Werten benutzerdefinierter Felder zu sortieren.
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.
}
});
Sie können ein bestimmtes Ticket mit seiner Kanal-URL abrufen.
Ticket . getByChannelUrl ( channel . getUrl (), new Ticket . GetByChannelUrlHandler () {
@ Override
public void onResult ( Ticket ticket , SendbirdException e ) {
if ( e != null ) { // Error.
return ;
}
}
});
Sie können die Anzahl der offenen Tickets in Ihrer Client-App anzeigen, indem Sie Ticket.getOpenCount()
verwenden.
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.
}
});
Verwenden Sie die Methode ticket.close()
um Kunden das direkte Schließen eines Tickets in ihrer Client-App zu ermöglichen, sodass Agenten schnell und ohne Verzögerung oder Bestätigung durch den Kunden zu anderen Kundenanfragen wechseln können.
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.
}
});
Im Falle eines API-Anforderungsfehlers enthält der SendbirdException
Parameter in einem Handler die Informationen über den Fehler.
Eigentum | Beschreibung |
---|---|
Code | SendBirdError.ERR_REQUEST_FAILED (800220) |
Nachricht | Detaillierte Fehlermeldung mit spezifischem Fehlercode, falls vorhanden. |