В этом руководстве описаны шаги конфигурации, необходимые для подключения Discourse к Salesforce с помощью плагина Discourse Salesforce.
Discourse Salesforce доступен на тарифном плане Enterprise.
Требуемый уровень пользователя: Администратор
Шаг 0: Определение ответственных в вашей организации
Перед началом работы в Discourse убедитесь, что вы знаете, каких сотрудников вашей организации нужно привлечь для выполнения действий на стороне Salesforce.
Администратор Salesforce
Кто это: В большинстве организаций это тот, кого ваша команда называет «администратором Salesforce» — человек, управляющий конфигурацией вашей организации Salesforce, а не обязательно системный администратор ИТ.
Что они делают: Выполняют первоначальную настройку на стороне Salesforce: создают External Client App (или Connected App) в разделе Setup, настраивают параметры OAuth и получают Consumer Key и Consumer Secret.
Что им нужно: Доступ к разделу Setup в Salesforce, в частности к External Client App Manager. В Salesforce для этого требуется системное разрешение Customize Application. Оно включено в стандартный профиль System Administrator. Если человек, выполняющий настройку, не имеет профиля System Administrator, администратору Salesforce необходимо выдать ему набор разрешений, включающий «Customize Application».
Интеграционный пользователь Salesforce
Кто это: Пользователь Salesforce, учетные данные которого используются плагином Discourse для выполнения вызовов API к Salesforce.
Что они делают: Предоставляют имя пользователя для поля salesforce username в настройках плагина Discourse Salesforce, чтобы обеспечить все вызовы API из Discourse в Salesforce.
Что им нужно: У этого пользователя должны быть следующие разрешения:
| Разрешение | Почему это необходимо |
|---|---|
| API Enabled | Требуется для любого доступа к API Salesforce |
| Create, Read, Edit on Lead | Создание и привязка Лидов (Lead) из пользователей Discourse |
| Create, Read, Edit on Contact | Создание и привязка Контактов (Contact) из пользователей Discourse |
| Create, Read, Edit on Case | Создание дел (Case) из тем Discourse |
| Create on Case Comment | Синхронизация ответов в темах как комментариев к делам (Case Comments) |
| Create on FeedItem (Chatter) | Публикация активности темы в Chatter |
Примечание: Интеграционным пользователем Salesforce может быть тот же человек, что и администратор Salesforce. Однако, как мера безопасности, мы рекомендуем использовать отдельную учетную запись интеграционного пользователя с более узким набором разрешений.
Шаг 1: Генерация сертификата и приватного ключа
Роль: Администратор Discourse
Плагин Discourse Salesforce использует поток JWT Bearer для аутентификации в Salesforce. Это требует пару ключей RSA: публичный сертификат, который Salesforce использует для проверки идентификации плагина, и приватный ключ, который Discourse использует для подписи своих запросов.
- Следуйте этим инструкциям, чтобы сгенерировать пару ключей:
server.crt- публичный сертификат, подтверждающий, что Discourse является авторизованным приложениемserver.key- приватный ключ, который подписывает API-запросы Discourse к Salesforce
- Отправьте файл
server.crtвашему администратору Salesforce, чтобы он мог загрузить его на Шаге 3. - Сохраните
server.keyдля вставки в настройки плагина Discourse Salesforce на Шаге 5.
Шаг 2: Создание External Client App в Salesforce
Роль: Администратор Salesforce
-
Войдите в Salesforce.
-
Нажмите на значок шестеренки (
) в правом верхнем углу и выберите Setup. -
В поле быстрого поиска (Quick Find) найдите External Client App Manager и выберите его.
-
Нажмите New External Client App.
Примечание: Эти шаги используют External Client App Manager, представленный в Salesforce Spring '25. Если ваша организация работает на более ранней версии, интерфейс может отображать App Manager или Connected Apps — базовые настройки остаются теми же.
Шаг 3: Заполнение основной информации и настроек OAuth
Роль: Администратор Salesforce
-
Заполните раздел Basic Information (поля App Name и Contact Email обязательны).
-
Разверните раздел API (Enable OAuth Settings) и установите флажок Enable OAuth.
-
Настройте следующие параметры в этом разделе:
- Callback URL: Добавьте обе эти ссылки, заменив
<your-discourse-site>на полный URL вашего сайта Discourse (например,meta.discourse.org):
https://<your-discourse-site>
https://<your-discourse-site>/auth/salesforce/callback
Убедитесь, что в конце ни одного из URL нет косой черты /! - Available OAuth Scopes: Добавьте все три:
- Access the identify URL service (id, profile, email, address, phone)
- Manage user data via APIs (api)
- Perform requests at any time (refresh_token, offline_access)
- Flow Enablement: Включите оба:
- Enable Client Credentials Flow
- Enable JWT Bearer Flow — это требуется для того, чтобы плагин мог создавать Лиды, Контакты и Дела
- Callback URL: Добавьте обе эти ссылки, заменив
-
В разделе Certificate Upload нажмите Upload files и загрузите файл
server.crtиз Шага 1. -
Нажмите Create.
Шаг 4: Получение Consumer Key и Consumer Secret
Роль: Администратор Salesforce
-
На только что созданном External Client App перейдите на вкладку Settings.
-
Прокрутите вниз и разверните раздел OAuth Settings.
-
Нажмите Consumer Key and Secret.
-
Введите повторно учетные данные для входа в Salesforce, когда об этом попросят.
-
Скопируйте Consumer Key и Consumer Secret и отправьте их администратору Discourse для Шага 5.
Шаг 5: Настройка параметров плагина Discourse
Роль: Администратор Discourse
-
В Discourse перейдите в Admin → Plugins → Salesforce → Settings.
-
Заполните следующие настройки:
Настройка Значение salesforce enabledУстановите флажок, чтобы включить интеграцию salesforce client idConsumer Key из Шага 4 salesforce client secretConsumer Secret из Шага 4 salesforce rsa private keyВставьте полное содержимое файла server.keyиз Шага 1salesforce usernameИмя пользователя интеграционного пользователя Salesforce salesforce authorization server urlТребуется только при использовании пользовательского домена Salesforce (например, https://mycompany.my.salesforce.com) -
Нажмите Save changes.
Шаг 6: Авторизация приложения Discourse в Salesforce
Роль: Интеграционный пользователь Salesforce
- Перейдите по адресу
https://<your-discourse-site>/salesforce/admin/authorize, заменив<your-discourse-site>на полный URL вашего сайта Discourse (например,meta.discourse.org). - Вы будете перенаправлены в Salesforce, где вам предложат авторизовать приложение.
- Войдите в Salesforce и предоставьте доступ приложению.
После выполнения этого шага все должно работать. Вы можете убедиться в этом, зайдя в профиль любого пользователя в Discourse — в меню администратора должна появиться опция Sync with Salesforce.
Устранение неполадок
Если плагин не работает после настройки, сначала проверьте следующее:
-
Проверки состояния на панели администратора: плагин выводит два предупреждения в
/adminпри неправильной конфигурации:SalesforceInvalidCredentials: неверные Consumer Key, Consumer Secret, приватный ключ RSA или имя пользователяSalesforceAppNotApproved: шаг авторизации (Шаг 6) не был выполнен, или связанное приложение было отклонено
-
Включите подробное логирование: включите настройку сайта
salesforce_auth_verbose_logging, чтобы записывать подробный вывод аутентификации в/logsDiscourse. Общие ошибки и их причины:
| Симптом | Вероятная причина |
|---|---|
| «Insufficient privileges» (недостаточно привилегий) при создании Лида или Контакта | У интеграционного пользователя нет прав Create/Edit на объекты Lead или Contact |
| «Insufficient privileges» (недостаточно привилегий) при создании Дела | У интеграционного пользователя нет прав на Case или Case Comment |
| «Invalid grant» (недопустимый грант) на этапе авторизации | Ключ RSA не соответствует сертификату, загруженному на Шаге 3, или не был включен поток JWT Bearer |
| Ошибка «DUPLICATE_VALUE» при создании Лида или Контакта | Ожидаемое поведение, если пользователь уже существует в Salesforce — плагин обрабатывает это, но подробнее смотрите в основной документации плагина |
| Посты Chatter не появляются | У интеграционного пользователя может отсутствовать разрешение FeedItem Create |






