npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wechaty-freshdesk

v1.0.2

Published

Wechaty Freshdesk Plugin helps Freshdesk unifies conversations from WeChat, and helps you resolve issues across channels effortlessly!

Downloads

21

Readme

wechaty-freshdesk

NPM Version NPM

Freshdesk is a cloud-based helpdesk system that offers powerful solutions for customer service.

Wechaty Freshdesk Plugin helps Freshdesk unifies conversations from WeChat, and helps you resolve issues across channels effortlessly!

Wechaty Plugin Freshdesk

Wechaty Plugin Freshdesk Powered by Wechaty TypeScript

Introduction

Wechaty Freshdesk Plugin helps you to manage your customers/leads/users in the WeChat Room, with the power of the Freshdesk service.

Requirements

  1. Wechaty v0.40+
  2. Freshdesk Garden Plan+ (for Assuming identities support)
  3. Freshdesk config
    1. Create two custom ticket fields
    2. Create Webhook

Usage

import { WechatyFreshdesk } from 'wechaty-freshdesk'

const config = {
  contact: true,              // enable direct message.
  room: 'room_id@chatroom',   // enable a specific room. `true` for enable all room

  mention         : true,
  webhookProxyUrl : 'https://smee.io/your_smee_io_proxy_url',
  apiKey          : 'your_freshdesk_api_key',
  portalUrl       : 'https://your_portal_name.freshdesk.com',
}

const FreshdeskPlugin = WechatyFreshdesk(config)

const wechaty = new Wechaty()
wechaty.use(FreshdeskPlugin)
  1. config.contact: Whether to allow direct message to be sync with ticket reply. false to deny all, true for allow all; Supports contact id(string) and contact name(RegExp). You can also mix them in array.
  2. config.room: The room id of your service WeChat room.
  3. config.mention: If set to true, customers need to use @ to mention the bot when they want to ask questions.
  4. config.webhookProxyUrl: A smee.io link that you need to set it to receive the Freshdesk Webhook events.
    1. smee.io - Webhook payload delivery service - Receives payloads then sends them to your locally running application.
  5. config.apiKey: The API Key for your Freshdesk account.
    1. Freshdesk API - How to find your API key

Configure Freshdesk Webhooks

In order to receive the reply and close events from Freshdesk, we need to configure the Freshdesk platform:

  1. Add two custom ticket fields
  2. Add a automation rule for Webhook

Note: Freshdesk Garden Plan (or above) is required, because we need Assuming identities feature.

1 Add Two Custom Ticket Field

  1. Login to your Freshdesk agent account, from the menu on the left, select Admin, then select Ticket Fields under the General Settings.
  2. Create two Single-line text fields:
    1. Wechaty Room
    2. Wechaty Contact

Freshdesk Ticket Fields

Doc: Creating custom fields in your ticket form

2 Go to Automation Setting Page

  1. Login to your Freshdesk agent account, from the menu on the left, select Admin, then select Automations.
  2. Below the Rules that run on, there will be three selections: Ticket Creation, Time Triggers, and Ticket Updates.

3 Create a Ticket Updates Rule

Freshdesk Automation Rule

  1. Select Ticket Updates, click the New rule button.
  2. Configure the rule as the following summary:
    1. When Ticket is updated
    2. When an action performed by Agent
    3. When public Note is Added
      OR
      When Reply is Sent
    4. Trigger Webhook Method - POST Url: https://smee.io/your_smee_io_proxy_url

And make sure you have configured the Webhook Content as the following:

Freshdesk Automation Rule

  1. Ticket ID {{ticket.id}}
  2. Last Public Comment {{ticket.latest_public_comment}}
  3. Wechaty Room {{ticket.cf_wechaty_room}}
  4. Wechaty Contact {{ticket.cf_wechaty_contact}}

Then click Preview and save.

Note: the POST Url must be as same as the webhookProxyUrl setting in the config.

See:

  1. Using Webhooks in automation rules that run on ticket updates
  2. Setting up automation rules to run on 'Ticket Updates'
  3. Assuming identities (Garden+)

Environment Variables

The following two environment variables will be used if the required information is not provided by the config.

1 WECHATY_PLUGIN_FRESHDESK_PORTAL_URL

process.env.WECHATY_PLUGIN_FRESHDESK_PORTAL_URL will be used if the config.portalUrl is not provided.

2 WECHATY_PLUGIN_FRESHDESK_API_KEY

process.env.WECHATY_PLUGIN_FRESHDESK_API_KEY will be used if the config.apiKey is not provided.

Learn more about the authorization token of freshdesk: Freshdesk API - How to find your API key

3 WECHATY_PLUGIN_FRESHDESK_WEBHOOK_PROXY_URL

We receive webhook payloads with the help from <smee.io>, by proxy them to our locally running Wechaty Plugin application.

process.env.WECHATY_PLUGIN_FRESHDESK_WEBHOOK_PROXY_URL will be used if the config.webhookProxyUrl is not provided.

See:

  1. smee.io - Webhook payload delivery service - Receives payloads then sends them to your locally running application.

Screenshot

Wechaty Freshdesk Conversation

Example

Our Friday BOT are using wechaty-freshdesk to connect our WeChat customers to Freshdesk.

You can read the source code from: https://github.com/wechaty/friday/blob/master/src/plugins/freshdesk.ts

See Also

  1. WhatsApp Integration in Freshdesk
  2. Freshdesk Integration in Freshdesk

History

master 1.0 (Oct 23, 2021)

Release 1.0 of Wechaty Freshdesk Plugin.

v0.6 Renamed from wechaty-plugin-freshdesk to wechaty-freshdesk

After the Freshdesk trail was end, we found that the following features are belonging to different plans:

  1. Identifying contacts with an external ID requires Estate Plan

  2. Assuming identities requires Garden Plan

  3. Supported both direct message and room messages to be managed by freshdesk via tickets

  4. use twitter_id as a workaround of unique_external_id

  5. Change custom ticket fields on Freshdesk to store roomId and contactId from Wechaty

  6. Change webhook setting on Freshdesk

v0.4 (July 21, 2020)

  1. Rename at to mention in config
  2. Support managing tickets from different WeChat rooms

v0.2 (June 26, 2020)

  1. Init code base
  2. Room message to Freshdesk
  3. Freshdesk message to Room (Powered by Smee.io)

Contributors

contributor contributor contributor contributor contributor contributor contributor contributor

Author

Huan LI (李卓桓), Tencent TVP of Chatbot, <[email protected]>

Profile of Huan LI (李卓桓) on StackOverflow

Copyright & License

  • Code & Docs © 2020 Huan LI <[email protected]>
  • Code released under the Apache-2.0 License
  • Docs released under Creative Commons