Recent searches
No recent searches

Arnaud Joly
Joined Apr 14, 2021
·
Last activity Feb 24, 2025
Following
0
Followers
0
Total activity
40
Votes
10
Subscriptions
16
ACTIVITY OVERVIEW
BADGES
ARTICLES
POSTS
COMMUNITY COMMENTS
ARTICLE COMMENTS
ACTIVITY OVERVIEW
Latest activity by Arnaud Joly
Arnaud Joly commented,
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,
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,
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,
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,
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,
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.
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.
- 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,
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
iOS
The logic in iOS is as follows:
- Take the ChatAPIConfiguration's
visitorInfo
anddepartment
properties. - Take the ChatConfiguration's
preChatFormConfiguration
data requirements. - If the underlying properties of
VisitorInfo
are nil or empty strings, and their corresponding data requirements are not.hidden
, then show the field. - If the underlying properties of
department
are nil or empty strings, and their corresponding data requirements are not.hidden
, then show the field. - The SDK shows the form to the user. The user fills in the details or skips any
.optional
fields at their discretion. - 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. - 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):
- Create a
VisitorInfo
object. - Fill it with already known information about the user.
- Configure the pre-chat form to ask for the missing information.
- Set up the observer.
- 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,
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:
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?
Edited Jan 20, 2025 · Arnaud Joly
1
Follower
4
Votes
0
Comments
Arnaud Joly created an article,
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,
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