如何用Twilio Functions更新Salesforce Case为Closed并解决JSON报错?
问题解决:JSON.parse 语法错误(Unexpected end of JSON input)
核心原因
你代码里的requestPayload使用了HTML实体编码的引号("),这不是有效的JSON格式字符。JSON.parse解析时无法识别",导致解析失败,抛出"Unexpected end of JSON input"错误。
修复方案
方案1:直接使用JSON对象(推荐)
完全跳过字符串转义+解析的步骤,直接定义要发送的对象,避免JSON解析环节的错误:
exports.handler = function(context, event, callback) { // 直接定义JSON对象,无需parse const stts = { Status: "Closed" }; getTokenInformation() .then(token => { const options = { Authorization: 'Bearer ' + token.access_token, 'Content-Type': 'application/json' }; return got(`${token.instance_url}/services/data/v56.0/sobjects/Case/${event.caseId}`, { headers: options, json: true, method: 'PATCH', body: stts, }); }) // 补充缺失的Promise处理逻辑,确保结果或错误能正确回调 .then(response => { console.log('Case状态更新成功:', response.body); callback(null, { success: true }); }) .catch(error => { console.error('更新失败:', error); callback(error); }); };
方案2:修复JSON字符串格式
如果一定要用字符串形式传递,把"替换为真实的双引号,保证JSON格式合法:
// 用真实双引号替代HTML实体编码字符 const requestPayload = '{"Status":"Closed"}'; const stts = JSON.parse(requestPayload);
额外注意事项
你提供的代码片段不完整,缺少.then()的后续处理和.catch()异常捕获逻辑,这会导致代码执行完成后无法正确触发Twilio的callback,建议补充完整,确保请求结果能正确返回或错误能被捕获处理。
内容的提问来源于stack exchange,提问作者M.ho
相关产品推荐
相关产品推荐

