You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Freshdesk Webhook提取工单主题内容填充自定义字段

Freshdesk 提取工单主题字符串填充自定义字段实现方案

你贴的浏览器端JS代码无法直接在Webhook/服务端自动化流程里运行,要实现提取主题中R开头预订号写入Resv#自定义字段的需求,有两种可落地的实现方式:

  • 无代码方案:用Freshdesk原生工作流自动化实现
    不需要额外搭建服务,直接在后台配置工作流即可:
    1. 新建工作流,触发条件设置为「工单创建」「工单主题被更新」
    2. 新增「提取文本」动作,选择提取源为工单主题,匹配规则用正则\bR[A-Za-z0-9]+\b,把匹配到的结果存为工作流临时变量
    3. 新增「更新工单」动作,找到Resv#自定义字段,把字段值设置为上一步存的临时变量,保存启用工作流即可
      注:如果你的预订编号有固定格式(比如R+8位纯数字),可以把正则调整成更精准的\bR\d{8}\b,避免误匹配其他R开头的单词。
  • Webhook方案:搭中转服务处理逻辑
    如果必须走Webhook链路,需要自己搭一个简单的中转服务承接Webhook请求,核心处理逻辑参考:
// Node.js 中转服务核心代码示例
const express = require('express');
const axios = require('axios');
const app = express();

app.post('/freshdesk-webhook-handler', express.json(), (req, res) => {
  // 拿Webhook推送的工单数据
  const ticketData = req.body.ticket;
  const ticketSubject = ticketData.subject;
  // 正则匹配R开头的预订号
  const matchRes = ticketSubject.match(/\bR[A-Za-z0-9]+\b/);
  const resvNo = matchRes ? matchRes[0] : '';

  // 调用Freshdesk官方API更新工单自定义字段
  axios.put(
    `https://你的Freshdesk域名.freshdesk.com/api/v2/tickets/${ticketData.id}`,
    {
      custom_fields: {
        "Resv#": resvNo
      }
    },
    {
      auth: {
        username: '你的Freshdesk API密钥',
        password: 'X'
      }
    }
  )
  res.sendStatus(200);
})

app.listen(3000);

注意:你之前写的示例代码有两个明显问题:

一是用了浏览器端专属的document.write API,服务端环境没有DOM对象,这段代码跑不起来;二是String.includes()方法只会返回true/false的布尔值,仅能用来判断指定子串是否存在,根本拿不到具体的预订编号内容,要提取指定格式的子串必须用正则匹配。

内容的提问来源于stack exchange,提问作者Marius Lazăr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:55:05