Recent searches


No recent searches

Arnaud Joly's Avatar

Arnaud Joly

Joined Apr 14, 2021

·

Last activity Feb 24, 2025

Following

0

Followers

0

Total activity

40

Votes

10

Subscriptions

16

ACTIVITY OVERVIEW

Latest activity by Arnaud Joly

Arnaud Joly commented,

Community comment Developer - Zendesk SDKs
Hi, 
 
as the Chat SDK doesn't handle the display of the Push Notification, it's a custom implementation and we cannot advise on how to proceed. 
I tested successfully in my own app following the android documentation, essentially using their code and replacing the Intent by the a Messaging intent.
 
Hope that this helps!

View comment · Posted Aug 30, 2022 · Arnaud Joly

0

Followers

0

Votes

0

Comments


Arnaud Joly commented,

Community comment Developer - Zendesk SDKs
Hi, would you be able to provide a reproduction using one of our demo app so we could try it on our end? I haven't been able to reproduce this issue in my app.
You can find the step to do so in our Getting help document.

I found a post online mentioning diverse solutions where they updated the Kotlin version, the IDE version, etc. which could possibly resolve the issue has well.
 
Hope that this helps!

View comment · Posted Aug 23, 2022 · Arnaud Joly

0

Followers

0

Votes

0

Comments


Arnaud Joly commented,

Community comment Developer - Zendesk SDKs

Hi Rafal Wesolowski

We've recently released the new version 2.1.0 for the Zendesk SDK, which contains the fix of the version 2.0.0 for Android 12. This should resolve your issue.

Thanks again for reporting that to us!

View comment · Posted Jan 28, 2022 · Arnaud Joly

0

Followers

0

Votes

0

Comments


Arnaud Joly commented,

Community comment Developer - Zendesk SDKs

Hi Gopal C

The SDKs don't support changing the locale at runtime so you will not be able to programmatically change the UI locale. I've tried on Android which ended in the writing going right to left after switching to Arabic but the element stayed in english.

The only existing function about language is the Help Center Locale Override which doesn't affect the UI but changes which locales are the articles pulled from.

We have this article available that summarise this: https://support.zendesk.com/hc/en-us/articles/4408825038746-How-do-language-translations-work-in-the-mobile-SDK-user-interface-and-HelpCenterActivity

Hope this helps!

View comment · Posted Jan 05, 2022 · Arnaud Joly

0

Followers

0

Votes

0

Comments


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Question

While using Zendesk SDK, what common information should I keep in mind?

Answer

Zendesk SDK is the new mobile SDK developed by Zendesk. This has been developed to work specifically with messaging and the Agent Workspace. Zendesk SDK for Unity with messaging is available as well. Below are some things to consider while using the SDK.

Limitations

The known issues and limitations can be referenced in our developer documentation for iOS and Android.

Google also requires actions regarding the way Firebase notifications for Android.

Overwriting core frameworks

The Zendesk SDK requires core frameworks, such as UIKit, within iOS to work as expected. If the behavior of these frameworks is overwritten, we cannot guarantee how our SDK will function within the app.

We recommend extending the UIKit API instead of overwriting it. When expecting specific behavior, overwriting the API prevents the SDK from working as intended within your app.

Avoid low contrast in your themes

You can customize the Zendesk SDK UI colors in the Admin Center.
Mobile devices are used in more diverse environments than desktop applications. Keep in mind the accessibility when editing the theme colors so that your app could be easily accessible from anywhere. We recommend following the W3C contrast guidelines.

Avoid similar light and dark themes

Zendesk SDK allows setting both light and dark themes in the Admin Center. If both of the themes are similar in color, your users may not see the differences which can cause confusion.

All of the SDK capabilities can be found in our developer documentation: Zendesk Web Widget and SDKs.

Edited Jul 09, 2024 · Arnaud Joly

1

Follower

3

Votes

0

Comments


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Question

I see that Zendesk has multiple mobile SDKs. What can I use each one for? 

Answer

Zendesk SDK for Messaging

This SDK is associated with messaging and it is available for both iOS and Android. They're also referred to as the Zendesk SDK for iOS and the Zendesk SDK for Android. A web version is available called the Zendesk SDK for Web.

Talk SDK

The Talk SDK is also available for both iOS and Android. This SDK is used as the mobile implementation of your Talk product to use phone support with the Talk digital line.

Unity SDK

Not to be confused with the Unified SDK below. The Unity SDK was created to bring Zendesk features to Unity games so that players could access requests, Help Center content, and be in contact with your support team without having to leave the app.

For more technical information about this SDK, see the developer documentation.

If you use messaging, see this article: Zendesk SDK for Unity with messaging.

Unified SDK

What is referred to as the Unified SDK is not technically a SDK, but rather the foundation that makes the Chat SDK, Support SDK, and AnswerBot SDK work in the same place. Those are also called the Classic SDKs and are developed so you could use them together within the same application:

  • Support SDK (iOS/Android): This SDK uses both Support and Help Center features. Use this SDK to help your customers submit or view their requests, and access your knowledge base.
  • Chat SDK (iOS/Android): This SDK lets customers initiate a live chat with your support team. 
  • AnswerBot SDK: Paired with Support, this SDK allows your customers to receive article suggestions and empowers the self-service capabilities of your app.
Note: The AnswerBot SDK is bundled with Support SDK. The functionality of AnswerBot depends on Support.  

Web SDK

The Web SDK is not technically a mobile SDK but to avoid confusion it is included here. It can refer to the Zopim Web SDK, which allows you to develop your own version of the Chat Widget.

The term can also refer to the Zendesk SDK for Web, a new version of the Web Widget that integrates the features of messaging.

Other considerations

  • The Zendesk SDK for Messaging is not part of the Unified SDK family and has not been developed to work with those SDKs. They can however be used side by side in order to facilitate your migration toward Zendesk SDK (Android/iOS).
  • The Support and Chat SDKs can be independent if you want them to be. Each has its own JWT system for user authentication.jwt-auth
  • Each of the SDKs has a default UI and a provider version to build your own interface and add Zendesk functions to it.

If you observe an issue with any of the mobile SDKs, contact the support team with the information described in this article: Ticket submission guidelines for mobile SDK developers.

Edited Mar 04, 2024 · Arnaud Joly

7

Followers

6

Votes

2

Comments


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Issue Symptoms

iOS and Android behave differently when it comes to Pre-chat and VisitorInfo objects and this can make unifying your application behaviors confusing.

The VisitorInfo object allows you to set the information about the visitor before starting the chat. In contrast, the PreChatForm object collects that information once the chat starts.

Initially, the idea was to use one or the other in your workflow, but not both at once, which has now been updated on iOS. 

The workflow with JWT authentication also modifies the behavior of Chat. For more information, refer to the documentation (Android|iOS) or see this article: Enabling authenticated users with the Chat SDK.

Resolution Steps

Disclaimer: This article is provided for instructional purposes only. Zendesk does not support or guarantee the code. Post any issues you have in the comments section or try searching for a solution online.

iOS

The logic in iOS is as follows:

  1. Take the ChatAPIConfiguration's visitorInfo and department properties.
  2. Take the ChatConfiguration's preChatFormConfiguration data requirements.
  3. If the underlying properties of VisitorInfo are nil or empty strings, and their corresponding data requirements are not .hidden, then show the field.
  4. If the underlying properties of department are nil or empty strings, and their corresponding data requirements are not .hidden, then show the field.
  5. The SDK shows the form to the user. The user fills in the details or skips any .optional fields at their discretion.
  6. The SDK gathers the information entered in the form.
    If any field was skipped, it falls back to the configuration details that were there. If that’s empty, no details are sent.
  7. The SDK assigns the department and calls chat.profileProvider.setVisitorInfo(visitorInfo) with the VisitorInfo details of the form (merging the entered data with the API configuration where not filled).

Example:

func status(for info: String?) -> FormFieldStatus {
info?.isEmpty == true ? .optional: .hidden
}

let chatAPIConfig = ChatAPIConfiguration()
chatAPIConfig.visitorInfo = visitorInfo
chatAPIConfig.department = departmentName
chat.configuration = chatAPIConfig
chat.profileProvider.setVisitorInfo(visitorInfo)
let chatUIConfig = ChatConfiguration()
chatUIConfig.preChatFormConfiguration = .init(name: status(for: visitorInfo.name),
email: status(for: visitorInfo.email),
phoneNumber: status(for: visitorInfo.phoneNumber),
department: status(for: form.departmentId))
// pass chatUIConfig into buildUI(engines:, configs:)

Android

For versions prior to SDK Chat 3.2.0:

In Android, the logic is different. The VisitorInfo gets erased entirely if the PreChatForm is enabled, regardless of if the field is Required, Optional or Hidden.

One way to work around this limitation is to update the VisitorInfo once the Chat is started (except the department which is not editable once the chat is started):

  1. Create a VisitorInfo object.
  2. Fill it with already known information about the user.
  3. Configure the pre-chat form to ask for the missing information.
  4. Set up the observer.
  5. Start the Chat activity.

Once the PreChat is completed and the chat goes to STARTED status, the visitor information is updated.

Example:

boolean visitorSet = false; // Generic condition to ensure that you only set those info once

// ...

public void
setupObserver(){
final ObservationScope observationScope = new ObservationScope();
Chat.INSTANCE.providers().chatProvider().observeChatState(observationScope, new Observer() {
@Override
public void update(ChatState chatState) {
ChatSessionStatus chatStatus = chatState.getChatSessionStatus();
// Status achieved after the PreChatForm is completed
if (chatStatus == ChatSessionStatus.STARTED) {
// Update the information MID chat here. All info but Department can be updated
if (!visitorSet) {
// Add here the code to set the visitor info - visitorInfo would be a VisitorInfo type variable containing all the information to set
profileProvider.setVisitorInfo(visitorInfo, null);
visitorSet = true;
}

} else {
// There are few other statuses that you can observe but they are unused in this example
Log.d("DEBUG", "[observerSetup] - ChatSessionUpdate -> (unused) status : " + chatStatus.toString());
}
}
});
}

Update the provided code scripts to suit your workflow.

From Version 3.2.0 onward:

The latest SDK allows a more flexible use of the PreChatForm with VisitorInfo. See this article for more information: Setting information for the chat session.

This can work natively by following the example in the documentation.

Edited Jan 10, 2024 · Arnaud Joly

4

Followers

3

Votes

1

Comment


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Question

How does the flow of MessagingActivity work with multiple engines or SDKs?

Answer

Multiple SDKs can be integrated into the MessagingActivity by adding engines using the .withEngines setting.

Those objects tell the activity which SDKs can be used and each one can receive its own configuration by passing it to the activity. For an example of this, see this article: Multiple configurations in one screen.

Once the activity starts, the flow will be as follows:

MessagingActivity.png

Once you reach the other engines, Chat, or Support, you won't be able to go back to the AnswerBot, unless you get out of the view and restart.

Once it's handed over, you'll see the following:

  • If handed to Support, the engine converts the ongoing discussion with AnswerBot to a ticket containing all the Chat transcripts. Additionally, if Conversation is enabled, you will be prompted with a button to access your Requests view, using RequestListActivity.
  • If handed to Chat, the engine starts a Chat flow and session as per the flow below. The engine executes like a normal Chat session and reuses the transcript of the Answer Bot discussion instead of asking you about the subject of this chat. The full transcript is added to the Chat as the initial message.

Few things to note:

  • Identity for Support SDK and VisitorInfo for Chat SDK are 2 distincts set of identity. The same goes for the JSON Web Token (JWT) process, which are fully separated.
  • The Answer Bot engine doesn't have any knowledge of the status of your Chat account. If your account is offline, the Answer Bot will still ask you if you want to reach out on Chat, and will then check the account status, triggering the offline message flow. To avoid this, check the Chat account status before passing the Chat engine to the MessagingActivity configuration. To check the account status, use this function from our Provider Chat SDK.
  • The default name of the Chat Bot is: Answer Bot. Once you hit either of those options, do not discuss with the Answer Bot engine. Instead, do it with either Chat or Support. For more information, see the article: Why do I see the Answer Bot in the Chat SDK even though I don't have a subscription?

mceclip1.png

Note: if you have messaging with omnichannel routing enabled, the routing behavior for messaging is different from live chat routing. Omnichannel routing is the default routing experience for all accounts and trial customers of Zendesk Suite created after December 11, 2024. For more information, see the article: Routing messaging tickets and notifications.

Edited Jan 20, 2025 · Arnaud Joly

1

Follower

4

Votes

0

Comments


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Question

How do language translations work in the Classic SDK user interface and HelpCenterActivity

Answer

By default, Classic SDKs support a defined set of languages. Add your own variant or language to the SDK by creating your own string file for a specific locale. Another option is to overwrite the existing string in your own string.xml file and replace a particular language for iOS or Android.

When using SDK, the locale of the interface is based on your device locale. No function in the SDK can change your interface locale. Programmatically, changing the app locale will not reflect on the UI. The only way to change the UI elements translation is to change the device locale and restart the app.

What about the HelpCenterActivity?

When you use setHelpCenterLocaleOverride for iOS or Android, tell the help center which locale the articles should come from. This doesn't have any impact on the UI. By default, the help center refers to the device, like the rest of the app. For example, if your device locale is en-us, then the UI, as well as AnswerBot and the article locale will use en-us.

For example, if you use setHelpCenterLocaleOverride to set the locale of your help center to fr-fr, the UI and AnswerBot interactions will remain in en-us, but all the suggested articles will be offered in fr-fr.

Edited Dec 28, 2023 · Arnaud Joly

1

Follower

6

Votes

0

Comments


Arnaud Joly created an article,

ArticleHelp with support and ticketing

Question

When using the Chat SDK, sometimes if I leave the chat activity while typing, the keyboard stays open and I have to manually close it. How can I avoid that?

Answer

When this occurs, the easiest solution is to forcefully close the keyboard every time you come back to the main activity in the Chat UI.

In the example below, the MainActivity is starting the Chat UI. This will be the activity that you come back to once you close the Chat UI. In this example, the script creates a method in which MainActivity hides the keyboard when the view starts. See the code example below in Kotlin.

class MainActivity : AppCompatActivity() {

private fun hideKeyboard() {
val view = currentFocus ?: View(this)
val inputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.rootView.windowToken, 0)
inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0)
view.clearFocus()
}

override fun onStart() {
super.onStart()
if (Chat.INSTANCE.providers()?.connectionProvider()?.connectionStatus == ConnectionStatus.DISCONNECTED) {
hideKeyboard()
}
}
}

Make sure to check the connectionStatus on the onStart activity callback and see if the Chat is in state ConnectionStatus.DISCONNECTED, which means that the MessagingActivity is dismissed, and then the integrator can hideKeyboard.

Edited Oct 29, 2021 · Arnaud Joly

1

Follower

2

Votes

0

Comments