能否修改JSON文件值?Freshdesk API工单状态数字转文字需求
Freshdesk API:将工单数字状态转换为可读文本
当然可行!这是对接Freshdesk API时非常常见的需求,有几种简单直接的实现思路,咱们根据你的使用场景来选:
1. 预定义状态映射字典(最快捷)
Freshdesk有一套默认的状态码对应关系,你可以先把这些对应关系写成一个字典,拉取到工单数据后直接做匹配。默认状态对应大概是:
- 1: 等待审批
- 2: 待处理(open)
- 3: 待跟进(pending)
- 4: 已解决(resolved)
- 5: 已关闭(closed)
- 6: 等待客户回复
- 7: 等待客服回复
用Python实现的例子:
# 预定义Freshdesk状态映射 freshdesk_status_map = { 1: "awaiting_approval", 2: "open", 3: "pending", 4: "resolved", 5: "closed", 6: "waiting_on_customer", 7: "waiting_on_agent" } # 假设你已经从API拉取到工单数据 ticket_response = your_api_call_function() # 替换成你的API调用逻辑 ticket_list = ticket_response.json() # 遍历工单,添加可读状态字段 for ticket in ticket_list: # 用get方法避免找不到对应码时报错,返回自定义的未知状态 ticket["status_text"] = freshdesk_status_map.get(ticket["status"], f"unknown_status_{ticket['status']}")
这个方法的好处是不需要额外调用API,本地就能处理,适合快速搭建脚本或者默认状态足够用的场景。
2. 调用Freshdesk状态列表API动态获取映射(最稳妥)
如果你的Freshdesk账号配置了自定义状态,或者担心官方后续更新状态码,那直接调用Freshdesk的状态列表API来动态获取最新的映射关系会更稳妥。
调用的接口是GET /api/v2/statuses,用Python实现的例子:
import requests # 替换成你的Freshdesk信息 FRESHDESK_API_KEY = "你的API密钥" FRESHDESK_DOMAIN = "你的域名.freshdesk.com" def get_freshdesk_status_map(): """从Freshdesk API动态获取状态映射""" url = f"https://{FRESHDESK_DOMAIN}/api/v2/statuses" # Freshdesk API认证用API密钥+任意字符串(这里用"X") auth = (FRESHDESK_API_KEY, "X") headers = {"Content-Type": "application/json"} response = requests.get(url, auth=auth, headers=headers) response.raise_for_status() # 处理请求错误 # 将返回的状态列表转换成id:name的字典 status_list = response.json() return {status["id"]: status["name"] for status in status_list} # 获取最新状态映射 status_map = get_freshdesk_status_map() # 处理工单数据 ticket_list = your_api_call_function().json() for ticket in ticket_list: ticket["status_text"] = status_map.get(ticket["status"], f"unknown_status_{ticket['status']}")
这个方法能自动适配所有自定义状态,长期维护的项目推荐用这个,不用担心状态码变更导致的错误。
3. 在数据工具中直接处理(如果用BI/ETL工具)
如果你是用BI工具(比如Power BI、Tableau)或者ETL工具拉取工单数据,完全可以直接在工具里做状态映射,不需要写代码:
- Power BI:用
SWITCH函数,比如SWITCH([Status], 2, "open", 3, "pending", 4, "resolved", 5, "closed", "未知状态") - Tableau:用
CASE语句,比如CASE [Status] WHEN 2 THEN 'open' WHEN 3 THEN 'pending' ELSE '未知状态' END - Excel:用
VLOOKUP或者XLOOKUP函数匹配预定义的状态对照表
总结
- 快速脚本/默认状态场景:选预定义字典
- 自定义状态/长期项目:选动态API获取映射
- BI/ETL工具拉取数据:直接在工具内处理
内容的提问来源于stack exchange,提问作者Justin Merwin
相关产品推荐
相关产品推荐

