From f62d3b824dc5db67a100955f2f55944c61cf6f31 Mon Sep 17 00:00:00 2001 From: "byrne.reese" Date: Mon, 30 Sep 2024 08:52:45 -0700 Subject: [PATCH 1/3] Updated docs on permissions --- docs/crm/netsuite.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/crm/netsuite.md b/docs/crm/netsuite.md index 68ca2198..cecf9538 100644 --- a/docs/crm/netsuite.md +++ b/docs/crm/netsuite.md @@ -24,6 +24,8 @@ Installing the app from the SuiteApp marketplace is a necessary step prior to in ## Setup roles and permissions in NetSuite +Upon installation of the SuiteApp, a role will be created automatically within your account called "RingCentral Unified CRM Extension." This role has been specially tuned to contain the bare minimum number access level to fully operate the Chrome extension. You can see a detailed list of permissions below if you would like to incorporate these permissions into a custom role of your own. + ### Turn on REST web services REST Web Services is default to be invisible. We'll need to turn on the feature so to make it selectable for roles. Here's how to do it: @@ -34,7 +36,7 @@ REST Web Services is default to be invisible. We'll need to turn on the feature ### Create role with required permissions -For this extension to work, your NetSuite account admin needs to assign users with the permissions below: +If you would like to create a custom role that includes the permissions necessary to allow this extension to operate fully, consult the table below. | Category | Permission | Level | | ------------ | ------------------------------------ | ----- | From 89da43ca68dbab8c5e39395814698b74f7292cca Mon Sep 17 00:00:00 2001 From: Byrne Reese Date: Wed, 2 Oct 2024 10:42:59 -0700 Subject: [PATCH 2/3] Fixed typo --- src/adapters/redtail/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/adapters/redtail/index.js b/src/adapters/redtail/index.js index edae2dc8..0b8f0f91 100644 --- a/src/adapters/redtail/index.js +++ b/src/adapters/redtail/index.js @@ -41,7 +41,7 @@ async function getUserInfo({ authHeader, additionalInfo }) { }, returnMessage: { messageType: 'success', - message: 'Successfully connceted to Redtail.', + message: 'Successfully connected to Redtail.', ttl: 3000 } } @@ -380,4 +380,4 @@ exports.updateMessageLog = updateMessageLog; exports.getCallLog = getCallLog; exports.findContact = findContact; exports.createContact = createContact; -exports.unAuthorize = unAuthorize; \ No newline at end of file +exports.unAuthorize = unAuthorize; From 25a7f7bf3162a9628d3af6130ea454ceb8fdcb73 Mon Sep 17 00:00:00 2001 From: "byrne.reese" Date: Thu, 3 Oct 2024 11:18:52 -0700 Subject: [PATCH 3/3] Added docs about proprietary crms --- docs/developers/proprietary-crm.md | 37 ++++++++++++++++++++++++++++++ mkdocs.yml | 1 + requirements.txt | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 docs/developers/proprietary-crm.md diff --git a/docs/developers/proprietary-crm.md b/docs/developers/proprietary-crm.md new file mode 100644 index 00000000..f1e19888 --- /dev/null +++ b/docs/developers/proprietary-crm.md @@ -0,0 +1,37 @@ +# Integrating with a proprietary CRM + +The Unified CRM framework from RingCentral can be used to build an integration with any CRM, even a home-grown or proprietary one. If you are seeking to build an adapter for a home-grown CRM, here is a check list to see if what you have built is compatible with this framework. + +## Compatibility checklist for proprietary CRMs + +**:fontawesome-solid-clipboard-check: OAuth 2.0 support** + +Ideally, your proprietary CRM supports the [OAuth 2.0 authorization protocol](https://oauth.net/2/). From the perspective of building the adapter, this will by far be the easiest most turn-key way to connect the Unified CRM client application to your CRM. + +Technically, the framework can be made to work with alternative authentication mechanisms, like API keys and other tokenized methods. However, there is no guarantee such mechanisms will work out of the box. + +A similar API is needed to log a user out. This API would effectively invalidate an access key so that it cannot be used again. + +**:fontawesome-solid-clipboard-check: API to create a call log, note or activity record** + +Every CRM has its own unique vernacular, but at the end of the day the core function of an adapter is to facilitate the process of recording communications in the CRM in question. To do that, the CRM needs an API that allows the adapter to store in the CRM's database a record of a phone call or SMS message. + +A similar API will be needed for fetching, and editing/updating call logs as well. + +**:fontawesome-solid-clipboard-check: API to lookup associations with a phone number** + +To execute a call pop, which describes the process of opening a web page or fetching information about the person or contact one is calling or receiving a call from, the CRM needs an API that can receive as input a phone number, and return information about the person corresponding to that phone number. + +Ideally, that API will take as input a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164) but search the CRM for phone numbers stored in any other format. The stricter the search syntax is for phone numbers, the less reliably contacts/associations will be found when a search is conducted. + +**:fontawesome-solid-clipboard-check: API to create a contact** + +When a call is received for which no association or contact exists, users are given the opportunity to create a contact record to associate the activity record with. To facilitate this user flow, an API must exist that allows a contact to be created and associated with a given phone number. + +**:fontawesome-solid-clipboard-check: API to fetch the name of the currently logged in user** + +Finally, in order to show users that they have connected to the CRM successfully, an API needs to exist that returns the current user's name, and validates that the access key or API key used to authenticate with the CRM is valid. + +## Server recommendations + +Technically, an adapter's server could be implemented in any language. However, the fastest and easiest way to implement an adapter's server is using our pre-made Javascript [adapter server framework](https://github.com/ringcentral/rc-unified-crm-extension). diff --git a/mkdocs.yml b/mkdocs.yml index de69d6aa..50adac6f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -80,6 +80,7 @@ nav: - 'Getting started': developers/getting-started.md - 'Technical overview': developers/adapter.md - 'Build and deployment': developers/deploy.md + - 'Proprietary CRMs': developers/proprietary-crm.md - 'Adapter': - 'Authorization': developers/auth.md - 'Manifest': diff --git a/requirements.txt b/requirements.txt index fd9ac3a9..f3273c04 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,10 @@ jinja2~=3.0 markdown~=3.2 mkdocs~=1.5,>=1.5.3 +mkdocs-material mkdocs-material-extensions~=1.3 +markdown_fenced_code_tabs>=1.0.3 +mkdocs-markdown-filter>=0.1.1 pygments~=2.16 pymdown-extensions~=10.2 mdx_include>=0.4.1