From 7d0b49afdec2a204412e4801ee389bc35cd2e89c Mon Sep 17 00:00:00 2001 From: cohencor-m Date: Mon, 14 Apr 2025 21:43:36 -0400 Subject: [PATCH] Reworked Salesforce Bot from behaviours to automations and created a workflow fixes: #80 --- _packages/salesforce-bot.md | 466 ------------------ _solutions/integrations/salesforce.md | 6 +- _workflows/wgm.integrations.salesforce.md | 351 +++++++++++++ .../integrations-salesforce/global-menu.png | Bin 0 -> 11635 bytes .../integrations-salesforce/interaction.png | Bin 0 -> 17006 bytes .../workflow-config.png | Bin 0 -> 23177 bytes 6 files changed, 354 insertions(+), 469 deletions(-) delete mode 100644 _packages/salesforce-bot.md create mode 100644 _workflows/wgm.integrations.salesforce.md create mode 100644 assets/images/workflows/integrations-salesforce/global-menu.png create mode 100644 assets/images/workflows/integrations-salesforce/interaction.png create mode 100644 assets/images/workflows/integrations-salesforce/workflow-config.png diff --git a/_packages/salesforce-bot.md b/_packages/salesforce-bot.md deleted file mode 100644 index 2d9fef83..00000000 --- a/_packages/salesforce-bot.md +++ /dev/null @@ -1,466 +0,0 @@ ---- -title: Salesforce Bot -excerpt: A bot demonstrating integration between Cerb and Salesforce. -layout: integration -topic: Packages -permalink: /packages/salesforce-bot/ -jumbotron: - title: Salesforce Bot - tagline: "" - breadcrumbs: - - - label: Resources » - url: /resources/ - - - label: Packages » - url: /resources/packages/ ---- - -* TOC -{:toc} - -# Introduction - -This package creates **Salesforce Bot** for demonstrating integration between Cerb and the [Salesforce API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/). - -
- -
- -# Configure the Salesforce service - -If you haven't already, follow [these instructions](/solutions/integrations/salesforce/) to configure the Salesforce service and add your first connected account. - -# Import the package - -Navigate to **Setup >> Packages >> Import**. - -Paste the following package into the large text box: - -{% highlight json %} -{% raw %} -{ - "package": { - "name": "Salesforce Bot", - "cerb_version": "9.1.0", - "revision": 1, - "requires": { - "cerb_version": "9.1.0" - }, - "configure": { - "prompts": [ - { - "type": "chooser", - "label": "Salesforce Account:", - "key": "salesforce_account_id", - "params": { - "context": "cerberusweb.contexts.connected_account", - "single": true, - "query": "name:salesforce" - } - }, - { - "type": "text", - "label": "Salesforce Instance:", - "key": "salesforce_instance", - "params": { - "placeholder": "(e.g. na55)" - } - } - ], - "placeholders": [ - - ] - } - }, - "bots": [ - { - "uid": "bot_38", - "name": "Salesforce Bot", - "owner": { - "context": "cerberusweb.contexts.app", - "id": 0 - }, - "is_disabled": false, - "params": { - "config": { - "instance": "{{{salesforce_instance}}}", - "api_version": "v40.0" - }, - "events": { - "mode": "all", - "items": [ - - ] - }, - "actions": { - "mode": "all", - "items": [ - - ] - } - }, - "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAk1BMVEX///8AnNsAmtr6/f/+/v/3/P4AmdoRod1WvufP7fgzsOIZpN7o9vzT7vmQ0+9AsuMyreEhqN8LntwFndz0+/3u+f3r9/zk9fur3vOh2vKb2PGAzO13yOtjwelSuuYpqeDg8/vb8frI6vfB5/az4fSW1vCDzu19y+xbvudIt+S+5fa24/Wz3/SY1fCI0e5EteQ7sOLXaIOzAAACLklEQVRo3u3X2XKqQBRG4fU3BGI0jpknMw9nfv+nO21aaKNgBG2qkuK7EKGRJbu0Smm1Wq1W62t7ljOOCeRNHxBAV9bazEgzN9SnIoZMvIObfFWJsrdAdalKYRmtqD61qdYAFaOSU9VDFaorfMO64l0/TZLkKg4U0fK3K0CjyFnIiEeBFyl8RgE0ElEjETUSUSOR1/ARq5GIvk9ETUcOVKws39n4jfXwqkVOAKPN1I5UmW9Rw5Rfza/SqRFRJna7Y2YO55FbrEl2/nwzdRtbjbjHVruLq6uRSBnDsczdo8RIBlzkArIdoxRpCMOhIHLrkX22L8HIGCN40xWsRJS7ZKzchIGykK30/ewge5gQ28ipH6yxB6TVyNIAp35pfx7Zs0DAcR4x4J7aiPx1799PjpcjWmSwUg3g7oePONIJ5DeREBVFIpx1Eesa3CuSPCIPzu3Cs6TiO7lgoEVlP6NLI/uy6OkCk131J/088kduWxBZPvAQg06h02MeMViuFj366hCOcJ8uP5bbbF5rIjqcH3rC2vMzIa+l/oPkTskiit3+COtMmb/AWNWBNoel6m64llchEuxF53UjqoAZhfXQRIQGIjQQiQhfOSN85BfhI9/kX8MRhK7EWCEryTGFOtrebz7T09bYQMiG9y9kw7sM2/Be0kn3CVUTU4c+cd5Z+tqFqLjppkm3zxZSrXPCbmgdCF+B8BUIX4HwFXbtMHxiNUMw0eBg5ppWq9VqfVH/Ab6NHLHV3NfdAAAAAElFTkSuQmCC", - "behaviors": [ - { - "uid": "behavior_214", - "title": "Create account record", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "variables": { - "var_name": { - "key": "var_name", - "label": "Name", - "type": "S", - "is_private": "0", - "params": { - "widget": "single" - } - } - }, - "nodes": [ - { - "type": "action", - "title": "Execute HTTP request", - "status": "live", - "params": { - "actions": [ - { - "action": "core.va.action.http_request", - "http_verb": "post", - "http_url": "{# See: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_create.htm #}\r\nhttps://{{behavior_bot_config.instance}}.salesforce.com/services/data/{{behavior_bot_config.api_version}}/sobjects/Account/", - "http_headers": "Content-Type: application/json", - "http_body": "{% set json = {\r\n\t\"name\": var_name\r\n} %}\r\n{{json|json_encode|json_pretty}}", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "{{_http_response.body|json_pretty}}", - "format": "json", - "is_simulator_only": "0", - "var": "response_json" - } - ] - } - } - ] - }, - { - "uid": "behavior_210", - "title": "Get account record", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "variables": { - "var_account_id": { - "key": "var_account_id", - "label": "Account ID", - "type": "S", - "is_private": "0", - "params": { - "widget": "single" - } - } - }, - "nodes": [ - { - "type": "action", - "title": "Call to Salesforce API", - "status": "live", - "params": { - "actions": [ - { - "action": "_set_custom_var", - "value": "", - "format": "", - "is_simulator_only": "0", - "var": "fields" - }, - { - "action": "core.va.action.http_request", - "http_verb": "get", - "http_url": "https://{{behavior_bot_config.instance}}.salesforce.com/services/data/{{behavior_bot_config.api_version}}/sobjects/Account/{{var_account_id}}?fields=Id,Name", - "http_headers": "", - "http_body": "", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "{{_http_response.body|json_pretty}}", - "format": "json", - "is_simulator_only": "0", - "var": "response_json" - } - ] - } - } - ] - }, - { - "uid": "behavior_211", - "title": "Get Salesforce versions info", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "nodes": [ - { - "type": "action", - "title": "Call to Salesforce API", - "status": "live", - "params": { - "actions": [ - { - "action": "core.va.action.http_request", - "http_verb": "get", - "http_url": "{# See: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_versions.htm #}\r\nhttps://{{behavior_bot_config.instance}}.salesforce.com/services/data", - "http_headers": "", - "http_body": "", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "{{_http_response.body|json_pretty}}", - "format": "json", - "is_simulator_only": "0", - "var": "response_json" - } - ] - } - } - ] - }, - { - "uid": "behavior_213", - "title": "List account records", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "nodes": [ - { - "type": "action", - "title": "Execute HTTP request", - "status": "live", - "params": { - "actions": [ - { - "action": "_set_custom_var", - "value": "SELECT id, name FROM Account", - "format": "", - "is_simulator_only": "0", - "var": "query" - }, - { - "action": "core.va.action.http_request", - "http_verb": "get", - "http_url": "{# See: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm #}\r\nhttps://{{behavior_bot_config.instance}}.salesforce.com/services/data/{{behavior_bot_config.api_version}}/query/?q={{query|url_encode}}", - "http_headers": "", - "http_body": "", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "{{_http_response.body|json_pretty}}", - "format": "json", - "is_simulator_only": "0", - "var": "response_json" - } - ] - } - } - ] - }, - { - "uid": "behavior_212", - "title": "List resources", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "nodes": [ - { - "type": "action", - "title": "Call to Salesforce API", - "status": "live", - "params": { - "actions": [ - { - "action": "core.va.action.http_request", - "http_verb": "get", - "http_url": "{# See: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_discoveryresource.htm #}\r\nhttps://{{behavior_bot_config.instance}}.salesforce.com/services/data/v40.0/", - "http_headers": "", - "http_body": "", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "{{_http_response.body|json_pretty}}", - "format": "json", - "is_simulator_only": "0", - "var": "response_json" - } - ] - } - } - ] - }, - { - "uid": "behavior_215", - "title": "Update account record", - "is_disabled": false, - "is_private": true, - "priority": 50, - "event": { - "key": "event.macro.bot", - "label": "Custom behavior on bot" - }, - "variables": { - "var_id": { - "key": "var_id", - "label": "ID", - "type": "S", - "is_private": "0", - "params": { - "widget": "single" - } - }, - "var_fields_json": { - "key": "var_fields_json", - "label": "Fields JSON", - "type": "S", - "is_private": "0", - "params": { - "widget": "multiple" - } - } - }, - "nodes": [ - { - "type": "action", - "title": "Execute HTTP request", - "status": "live", - "params": { - "actions": [ - { - "action": "core.va.action.http_request", - "http_verb": "patch", - "http_url": "{# See: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm #}\r\nhttps://{{behavior_bot_config.instance}}.salesforce.com/services/data/{{behavior_bot_config.api_version}}/sobjects/Account/{{var_id}}", - "http_headers": "Content-Type: application/json", - "http_body": "{{var_fields_json|json_pretty}}", - "auth": "connected_account", - "auth_connected_account_id": "{{{salesforce_account_id}}}", - "options": { - "raw_response_body": "1" - }, - "run_in_simulator": "1", - "response_placeholder": "_http_response" - }, - { - "action": "_set_custom_var", - "value": "HTTP Status: {{_http_response.info.http_code}}\r\nBody: \r\n{{_http_response.body}}", - "format": "", - "is_simulator_only": "0", - "var": "response" - } - ] - } - } - ] - } - ] - } - ] -} -{% endraw %} -{% endhighlight %} - -Click the **Import** button. - -You'll be prompted to link the Salesforce connected account you created earlier. - -Click the **Import** button again. - -You should see the following: - -
- -
- -# Test the integration behaviors - -Click on **Salesforce Bot** and then click **Behaviors** on its card. - -
- -
- -Open the card for the **List account records** behavior. - -
- -
- -Click on the **Simulator** button at the top of the card. - -Click the **Simulate** button. - -You should see a JSON response with account records. - -
- -
- -You can use the simulator on the other behaviors to test them as well. - -# Next steps - -At this point you can modify the behaviors to meet your needs. You can use the responses from the [Salesforce API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest) in your behaviors. \ No newline at end of file diff --git a/_solutions/integrations/salesforce.md b/_solutions/integrations/salesforce.md index 41bc277a..7161e656 100644 --- a/_solutions/integrations/salesforce.md +++ b/_solutions/integrations/salesforce.md @@ -204,8 +204,8 @@ start: {% endhighlight %} -# Use the connected account in bot behaviors +# Use the connected account in automations -You can use the connected account you just created to access the [Saleforce REST API](https://developer.salesforce.com/page/REST_API) from bot behaviors in Cerb. This is typically accomplished using the **Execute HTTP Request** action from a bot, and selecting the connected account in the **Authentication:** section. +You can use the connected account you just created to access the [Salesforce REST API](https://developer.salesforce.com/page/REST_API) from automations in Cerb. This is typically accomplished using the `http.request` action from an automation, and selecting the connected account in the ``authentication`` field. -You can import the [Salesforce Bot](/packages/salesforce-bot/) package for a working example. \ No newline at end of file +Alternatively, you can import the [Salesforce](/workflows/wgm.integrations.salesforce/) workflow for a working example. \ No newline at end of file diff --git a/_workflows/wgm.integrations.salesforce.md b/_workflows/wgm.integrations.salesforce.md new file mode 100644 index 00000000..7bb248db --- /dev/null +++ b/_workflows/wgm.integrations.salesforce.md @@ -0,0 +1,351 @@ +--- +title: Salesforce +excerpt: Integrate Cerb with Salesforce's API +layout: integration +topic: Workflows +permalink: /workflows/wgm.integrations.salesforce/ +redirect_from: + - /packages/salesforce-bot/ +jumbotron: + title: Salesforce + tagline: "" + breadcrumbs: + - label: Resources » + url: /resources/ + - label: Workflows » + url: /resources/workflows/ +--- + +* TOC +{:toc} + +# Introduction + +This workflow contains multiple automations for demonstrating integration between Cerb and [Salesforce API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/). + +
+ +
+ +# Configure the Salesforce service + +If you haven't already, follow [these instructions](/solutions/integrations/salesforce/) to configure the Salesforce service and add your first connected account. + +# Installation + +Click on **Search >> Workflows >> (+) >> (empty)** and paste the following [KATA](/docs/kata/): + +{% highlight cerb %} +{% raw %} +workflow: + name: wgm.integrations.salesforce + version: 2025-04-15T01:10:55Z + description: Sample integrations for Salesforce + website: https://cerb.ai/workflows/wgm.integrations.salesforce + requirements: + cerb_version: >=11.0 <11.1 + cerb_plugins: cerberusweb.core, + config: + chooser/account: + label: Salesforce Account + record_type: connected_account + text/domain: + label: Your Salesforce domain + text/version: + label: API Version + default: v63.0 +records: + automation/versions: + fields: + name: wgm.integrations.salesforce.listVersions + extension_id: cerb.trigger.automation.function + description: List available API versions + script@raw: + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/version: + output: http_response + inputs: + method: GET + url: https://{{config.domain}}.my.salesforce.com/services/data/ + authentication: cerb:connected_account:{{config.account}} + on_success: + set: + response@json: {{http_response.body}} + http_response@json: null + + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['GET']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data')}} + allow@bool: yes + automation/createAccount: + fields: + name: wgm.integrations.salesforce.account.create + extension_id: cerb.trigger.automation.function + description: Create a new Account record + script@raw: + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/createAccount: + output: http_response + inputs: + method: POST + url: https://{{config.domain}}.my.salesforce.com/services/data/{{config.version}}/sobjects/Account/ + headers: + Content-Type: application/json + authentication: cerb:connected_account:{{config.account}} + body: + Name: Testerson LLC + NumberOfEmployees: 5 + Industry: Testing + on_success: + set: + response@json: {{http_response.body}} + http_response@json: null + + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['POST']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data/'~ cerb_workflow_config('wgm.integrations.salesforce','version') ~ '/sobjects/Account/')}} + allow@bool: yes + automation/updateAccount: + fields: + name: wgm.integrations.salesforce.account.update + extension_id: cerb.trigger.automation.function + description: Update an existing Account record + script@raw: + inputs: + text/accountid: + type: freeform + required@bool: yes + + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/createAccount: + output: http_response + inputs: + method: PATCH + url: https://{{config.domain}}.my.salesforce.com/services/data/{{config.version}}/sobjects/Account/{{inputs.accountid}} + headers: + Content-Type: application/json + authentication: cerb:connected_account:{{config.account}} + body: + BillingCity: Testerville + + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['PATCH']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data/'~ cerb_workflow_config('wgm.integrations.salesforce','version') ~ '/sobjects/Account/')}} + allow@bool: yes + automation/getAccount: + fields: + name: wgm.integrations.salesforce.account.get + extension_id: cerb.trigger.automation.function + description: Get info on an existing Account record + script@raw: + inputs: + text/accountid: + type: freeform + required@bool: yes + text/fields: + type: freeform + required@bool: yes + + + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/createAccount: + output: http_response + inputs: + method: GET + url: https://{{config.domain}}.my.salesforce.com/services/data/{{config.version}}/sobjects/Account/{{inputs.accountid}}?fields={{inputs.fields}} + authentication: cerb:connected_account:{{config.account}} + on_success: + set: + body@json: {{http_response.body}} + return: + body: {{body|json_encode|json_pretty}} + status_code: {{http_response.status_code}} + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['GET']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data/'~ cerb_workflow_config('wgm.integrations.salesforce','version') ~ '/sobjects/Account/')}} + allow@bool: yes + automation/query: + fields: + name: wgm.integrations.salesforce.query + extension_id: cerb.trigger.automation.function + description: Make a query for the name of all available accounts in your organization + script@raw: + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/createAccount: + output: http_response + inputs: + method: GET + url: https://{{config.domain}}.my.salesforce.com/services/data/{{config.version}}/query/?q=SELECT+name,id+from+Account + authentication: cerb:connected_account:{{config.account}} + on_success: + set: + response@json: {{http_response.body}} + http_response@json: null + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['GET']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data/'~ cerb_workflow_config('wgm.integrations.salesforce','version') ~ '/query/')}} + allow@bool: yes + automation/listResources: + fields: + name: wgm.integrations.salesforce.resources + extension_id: cerb.trigger.automation.function + description: List all available API endpoints for your version + script@raw: + start: + set/config: + config@json: {{cerb_workflow_config('wgm.integrations.salesforce')|json_encode}} + + http.request/createAccount: + output: http_response + inputs: + method: GET + url: https://{{config.domain}}.my.salesforce.com/services/data/{{config.version}}/ + authentication: cerb:connected_account:{{config.account}} + on_success: + set: + response@json: {{http_response.body}} + http_response@json: null + policy_kata@raw: + commands: + http.request: + deny/method@bool: {{inputs.method not in ['GET']}} + deny/url@bool: {{inputs.url is not prefixed ('https://'~ cerb_workflow_config('wgm.integrations.salesforce','domain') ~ '.my.salesforce.com/services/data/'~ cerb_workflow_config('wgm.integrations.salesforce','version') ~ '')}} + allow@bool: yes + automation/getAccountInteraction: + fields: + name: wgm.integrations.salesforce.account.get.interaction + extension_id: cerb.trigger.interaction.worker + description: Worker interaction for grabbing account record details + script@raw: + start: + await: + form: + title: Get Account Record + elements: + text/prompt_id: + label: Account ID + required@bool: yes + type: freeform + text/prompt_fields: + label: Account fields to retrieve (comma-separated) + default: Name,NumberOfEmployees,Industry + required@bool: yes + type: freeform + + function/getAccount: + uri: cerb:automation:wgm.integrations.salesforce.account.get + inputs: + accountid: {{prompt_id}} + fields: {{prompt_fields}} + + output: results + + outcome/success: + if@bool: {{200 == results.status_code}} + then: + await: + form: + title: Account Details + elements: + say/details: + content@text: + {{results.body}} + submit: + buttons: + continue/yes: + label: Exit + icon: circle-ok + icon_at: start + value: yes + reset: + label: Make Another Query + icon: refresh + icon_at: start + + + + policy_kata@raw: + commands: + function: + deny/uri@bool: {{uri != 'cerb:automation:wgm.integrations.salesforce.account.get'}} + allow@bool: yes + toolbar_section/accountInteractionToolbar: + fields: + name: Get Account Info + toolbar_name: global.menu + priority@int: 50 + is_disabled: 0 + toolbar_kata@raw: + interaction/getAccount: + label: Get Account Info + uri: cerb:automation:wgm.integrations.salesforce.account.get.interaction +{% endraw %} +{% endhighlight %} + +# Configuration + +|--- +| Field | +|-|- +| **Salesforce Account:** | A Salesforce [connected account](/solutions/integrations/salesforce/). +| **Your Salesforce Domain:** | The domain of your Salesforce instance (the part before `my.salesforce.com`). +| **API Version:** | Your desired API version. Defaults to `v63.0` + +
+ +
+ +You can update the configuration at any time by opening the workflow profile and clicking "Edit Configuration". + +# Test the integration + +## Create an Account record +The workflow contains six example automation functions and a worker interaction for accomplishing various tasks. Let's try creating a new `Account` record. + +Click on `wgm.integrations.salesforce.account.create` to bring up its card and click **Edit**. From there you can click the play button on the simulator. This should create a new `Account` record called `Testerson LLC`. The automation output will also present you with the ID of the new record. + +## Retrieve record fields +The workflow adds a "Get Account Info" interaction to the global menu. Click the Cerb icon in the bottom right corner of the screen and click **Get Account Info**. + +
+ +
+ +Enter the Account ID you want to retrieve (you can use the `Testerson LLC` account we created earlier) and a comma-separated list of the account fields you want to retrieve, or use the defaults. + +
+ +
+ +You will be presented with the account fields you entered and their respective values. + +You can test the other automations in their simulators as well. + +# Next steps + +At this point you can modify the automations to meet your needs. You can use the responses from the [Salesforce API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest) in your automations. \ No newline at end of file diff --git a/assets/images/workflows/integrations-salesforce/global-menu.png b/assets/images/workflows/integrations-salesforce/global-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..233fe9bc39a5002da7204bbd25b12f3761c04a26 GIT binary patch literal 11635 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 literal 0 HcmV?d00001 diff --git a/assets/images/workflows/integrations-salesforce/interaction.png b/assets/images/workflows/integrations-salesforce/interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..b31d6e6cef919368147c8f503cb7693dcb5180e6 GIT binary patch literal 17006 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 literal 0 HcmV?d00001 diff --git a/assets/images/workflows/integrations-salesforce/workflow-config.png b/assets/images/workflows/integrations-salesforce/workflow-config.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca642012ef373b387b3eb5fdf210c171fdf1066 GIT binary patch literal 23177 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 z�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