This article is intended for Salesforce administrators responsible for installing and configuring the Language I/O Response add-in for automated case translation.
Install the Package
- Contact Language I/O Support at email@example.com to get an account setup for your company. You will be sent a set of API credentials that you will add to the secure settings area as shown in the next section. Language I/O will need the username, password, and security token for an account with permissions allowing the user to modify cases and objects used by cases such as case comments and email drafts. This set of credentials will require API access at a minimum for translations to be pushed from the Language I/O server back into Salesforce, but once app installation is complete, regular login permissions can be removed from these credentials for security purposes.
- Install the package from the latest URL below depending on whether you are using a Sandbox or Production org. Begin by logging into the instance of Salesforce you wish to use. Visit the install link in the same browser and select "Install for all users".
- Production Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0H000001ICy0
- Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0H000001ICy0
Create & Populate the Secure Settings
- To setup secure settings for the app, we'll need to add a new visualforce tab that will only be used by an Administrator during the initial setup process. This is where we will store the Language I/O API credentials that allow the app to communicate securely with the Langauge I/O server to retrieve translations of case content.
Navigate to Setup -> Build -> Create -> Tabs.
Press the 'New' button next to the "Visualforce Tabs" label.
- Step 1: Enter the information shown below:
* Select "LinguistNow_SecureResponseSettings..." in Visualforce Page dropdown.
* "Language I/O Response Secure Settings" for the Tab Label.
* Tab Name should auto populate based on Tab Label.
* Select "Safe" for the tab style.
* "Language I/O Response Secure Settings" in Description field.
* Press 'Next'
Step 2: Be sure to give the appropriate user profile Tab Visibility.
Step 3: Select the Custom App that you want the tab to be available for. Typically we add it to the Console App that will be hosting the chat functionality but you can have it available for all apps:
- Next, add the tab layout in the Custom App that you would like for it to appear (as an administrator). Go to My Settings > Display & Layout > Customize My Tabs
- Select the Custom App you want to add the tab to, then select the 'Language I/O Response Secure Settings' tab and add it to your list of Selected Tabs, then press save.
- Launch the Custom App you added the 'Language I/O Response Secure Settings' tab to and navigate to it. Populate the following fields (Note: Consumer Id is deprecated and not required).
* Language I/O Url: https://golinguist.com/linguistnow/resources/
* Language I/O Username: [Provided by Language I/O]
* Language I/O Password: [Provided by Language I/O]
The settings are one-way entry and will disappear after saving. This is expected. After verifying that the product is working at the end of this article, this tab can be removed for security reasons as these settings only need to be entered once.
General App Setup & Customization
- If you don't already have a predefined locale or language field for cases in your org, add a custom field to the case object by going to Setup > Customize > Cases > Fields. Name this field something intuitive like "locale" or "language." This will be the field used for setting the language/locale for the case via a defined workflow or by Language I/O through language auto-detection. If you do not setup a workflow to populate this field on your side, the Language I/O server will set it automatically when that field is left empty during a translation request to the Language I/O service.
- If you need to setup an HTML form to test case creation in a test org, you can Enable Case Feed by going to Customize > Self Service > Web-To-Case and enabling it.
- Ensure the Language I/O server is added to the safe servers list in Setup > Administer > Security Controls > Remote Site Settings. Add "https://golinguist.com" to remote sites.
- If email drafts are not already enabled on the site, enable email drafts in the case feed by navigating to Setup and entering "Support Settings" in the Quick Find box. Select Support Settings and click Edit. Select Enable Email Drafts and click Save.
- User permissions for the API user Language I/O uses to connect must have permissions to access the following: All objects installed with Language I/O, Account, Case, CaseComment, EmailMessage,Name, OpenActivity, Task. Also Email to Case for some features.
- Next we'll walk through the configuration options available by default in the Language I/O case translation app. To access these settings, navigate to
Setup > Develop > Custom Settings > LinguistNowSettingsPublic.
Click "[Manage]". An example of this page can be seen in the screenshot below. Underneath the screenshot is a description of each configuration option.
*You'll see the term "LinguistNow" in the configuration options. This is not a third-party. This is what Language I/O formerly called our service. We have since moved away from the term LinguistNow to avoid confusion, referring to all of our apps and services under our company name of Language I/O. However we haven't completely eliminated it on the code side.
- LinguistNowCommentHumanOrMachine: For configurations that involve an agent posting to communities and forums, the Language I/O comment widget has to be used for the agent's response translations. Either machine or human must be entered into this field to tell the service whether to employ machine or human translation of the agent's response when it is entered as a comment. This configuration field is separate from the field that is used for agent responses from the standard visual editor, LinguistNowEmailDraftHumanOrMachine.
- LinguistNowConsumerId: This field is deprecated and exists for backwards-compatibility. Do not enter a value here if you are not provided with one.
- LinguistNowDescAndActivityHumanOrMachine: This field tells the service whether to employ human or machine translation services for incoming customer content. For security reasons, this should always be set to machine unless your company is comfortable with the risk that human linguists will be translating customer generated content, which is far more likely than agent-generated content to contain embedded personal data. Review the Language I/O policy on personal data embedded in CRM content before you switch this field to human.
- LinguistNowEmailDraftHumanOrMachine:This value can be set to either human or machine and will tell the app which of these types of translation services to employ for translation of agent responses entered into the standard visual editor on the feed tab. Because agent responses can be controlled by the company and can always exclude personal data, it is safer to employ human translation services for agent response translation. Review the Language I/O policy on personal data embedded in CRM content before you switch this field to human.
- LinguistNowEmailTextOrHtml: This field lets Language I/O know whether to expect HTML tags in content based to us for translation. Enter html in this field if tags will be embedded in the content and enter text if no tags will be embedded in the content.
- LinguistNowLocaleFieldName: Enter the field name of the custom field you have chosen to store the language of the case. Ensure that __c is appended to the end as shown in the screenshot.
- LinguistNowStatusOnPending: If a custom status message is entered here, this is the status that will display in the standard case status field when a translation has been requested but the translation is still pending. A value such as "Translation pending" would be appropriate.
- LinguistNowStatusOnUpdate: If a custom status messages is entered here, this is the status that will display in the standard case status field when a requested translation has been pushed back into the case. A value such as "Translation complete" would be appropriate.
- LinguistNowUrl: This is the url of the Language I/O server that this app is configured to hit. Unless otherwise instructed, this field should be set to https://golinguist.com/linguistnow/resources/
- LinguistNowRetranslateHumanOrMachine: This field tells the service whether to employ human or machine translation services for retranslation requests of customer content. For security reasons, this should always be set to machine2 unless your company is comfortable with the risk that human linguists will be translating customer generated content, which is far more likely than agent-generated content to contain embedded personal data. Review the Language I/O policy on personal data embedded in CRM content before you switch this field to human. But if this field is set to machine2, the Language I/O service will use a secondary machine translation engine - not the one that was used for the original translation of the customer thread. This allows the agent to see a different translation, without taking the risk of sending customer-generated content to human linguists.
- LinguistNowPostHumanOrMachine: The Language I/O case app can include a box where the agent can generate a post that will be displayed in communities. Enter human if you want all agent posts translated by human linguists and enter machine if you want agent posts to be machine translated.
- LinguistNowAutoSendDraft: When the Language I/O service pushes a translation of the agent response back into Salesforce, the translation will be automatically emailed back to the customer if this box is selected. If the box is not selected, the translation will remain in draft form in the case until an agent manually sends it to the customer.
- LinguistNowCustomStatusField: The Language I/O server will push detailed translation status messages into the case and store them in this custom field if the custom field name is entered here. Ensure that __c is appended to the end.
- LinguistNowDraftDivider: To ensure that a long history of emails are not sent to the Language I/O server for translation, when requesting translation of an incoming customer email, a string can be entered into this field that is used as a delimiter to ensure that the Language I/O app only retrieves the email text that was added after the delimiter string entered here for translation via the Language I/O service. Common delimiter strings would contain a portion of the shared email signature that is populated by Salesforce.
- LinguistNowDisableRetranslate: When this box is checked, the Retranslate action will not be available in the Language I/O activity table where agents translate incoming customer emails.
- LinguistNowHumanWordCountFieldName: If you want the accumulated word count of human translated words to be stored in the case, enter the custom field name here where the word count should be tallied by the app. Ensure that __c is appended to the end of the custom field name.
- LinguistNowOnlyUpdateStatusOnHuman: If this box is checked, the regular case status field and the custom case status field (if a value is provided in the LinguistNowCustomStatusField box) will only be updated in relation to human translation requests. No status update will be provided for machine translation requests.
- LinguistNowMachineWordCountFieldName: If you want the accumulated word count of machine translated words to be stored in the case, enter the custom field name here where the word count should be tallied by the app. Ensure that __c is appended to the end of the custom field name.
- LinguistNowHideEmailOptions: If this box is checked, the agent will not see the option next to the visual editor that lets them decide whether their response to the customer will be translated via human or machine translation services. Rather the value set in the configuration field labeled LinguistNowEmailDraftHumanOrMachine will always be used. If this box is not selected, the agent will see a toggle next to the visual editor where they can determine whether to have their response to the customer translated via human or machine translation services.
- LinguistNowTreatCommentAsForeign: In scenarios where customer questions and responses are pushed into a case as a comment - as happens in communities - this box should be selected. This tells the Language I/O app that when translation of a comment is requested, the app should assume that the comment is in the language of the case/customer. Not the language of the agent.
- LinguistNowOnlyShowTranslationsInPlugin: When this box is checked, translations of customer questions or translations of agent responses before they are sent will not be duplicated as comments in the case, rather they will only be stored in custom object fields that are displayed in the Language I/O activity table. This is important for support organizations where the number of comments in a case counts against the agent's overall productivity score. If this box is not checked, translation of customer emails and translation of agent responses will be stored in case comments as well as in the Language I/O custom object.
- LinguistNowShowSubject: If this box is checked, the agent will have the option to translate the subject of the case. If it is not checked, the case subject will not be made available for translation.
- LinguistNowPostCommentsArePublic: If this box is selected, when an agent uses the Language I/O post box to post to the case, the translated post will be made public as soon as it is pushed into the case. If this box is not selected, the agent will need to manually make the translated comments public.
- LinguistNowPostCommentsLabel: This is the label that will be displayed above the agent's post comments box which is used when the agent needs to push a thread to the case that is of type comment.
- LinguistNowHidePostOptions: When this box is checked, the agent will not get to decide whether to have comments they add to the comments box translated via human or machine translation services. Rather the value that is entered into the LinguistNowCommentHumanOrMachine configuration field will always be used. If this box is not checked, the agent will get the option to decide whether a human or machine translation service will be used to translate their case comments.
Adding the Language I/O App to Page Layouts
- Add the email draft control to the layouts you want it enabled i by going to
Setup > Build > Customize > Cases > Page Layouts > Edit
Click on the "Feed View" Link
Then adding a visual force page of "Linguistnow_TranslateDraftPlugin" by clicking "+ Add a Visualforce page" set to 250px and move into a column then press 'Save'.
- For the activity table that should be displayed on the details view, which allows agents to translate incoming customer questions and to also translate their own comments that might be posted to the case, go back to the "Case Layout" view
*Drag a Section to where you want to be use the following settings.
*Scroll to Visualforce Pages under Case Layout and drag "LinguistNow_CaseTranslatePlugin" onto of the new Section you created.
*Click the wrench icon on new plugin and check the box for "Show scrollbars". Set the height to 200px and click OK.
The followings are the permissions required by the plugin for the Salesforce credentials that the Language I/O service will store and use in order to asynchronously push content back into the case.