使用Tapkey API创建Grunt时timeRestrictionIcal参数报错的解决咨询
解决Tapkey API创建Grunt时TimeRestrictionIcalMalformed错误
问题描述
调用Tapkey API创建Grunt时,传入timeRestrictionIcal参数失败,触发TimeRestrictionIcalMalformed错误。
请求参数示例
{ "boundLockId": "string", "contactId": "string", "timeRestrictionIcal":"string" }
传入的timeRestrictionIcal内容
BEGIN:VCALENDAR VERSION:2.0 PRODID:http://localhost:3000 BEGIN:VEVENT UID:20230422T030000Z62505530-4988-4a93-acff-1f673e50bf76 DTSTAMP:20230422T030000Z DTSTART; TZID=Europe/Uzhgorod:20230425T030000 DTEND; TZID=Europe/Uzhgorod:20230425T130000 END:VEVENT END:VCALENDAR
正确使用timeRestrictionIcal参数的方法
1. 修正iCal语法错误
你的iCal内容中,DTSTART和DTEND字段的分号后多余了空格,违反了iCal标准语法。需要移除空格,修正后的字段应为:
DTSTART;TZID=Europe/Uzhgorod:20230425T030000 DTEND;TZID=Europe/Uzhgorod:20230425T130000
2. 正确转义JSON中的iCal字符串
将iCal内容作为JSON参数值时,必须把所有换行符转义为\n,确保JSON格式合法。修正后的完整请求参数示例:
{ "boundLockId": "your-actual-bound-lock-id", "contactId": "your-actual-contact-id", "timeRestrictionIcal": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:http://localhost:3000\nBEGIN:VEVENT\nUID:20230422T030000Z62505530-4988-4a93-acff-1f673e50bf76\nDTSTAMP:20230422T030000Z\nDTSTART;TZID=Europe/Uzhgorod:20230425T030000\nDTEND;TZID=Europe/Uzhgorod:20230425T130000\nEND:VEVENT\nEND:VCALENDAR" }
3. 确保iCal格式符合RFC 5545标准
- 必须包含
VCALENDAR根组件,且包含VERSION和PRODID必填字段 VEVENT组件必须包含UID、DTSTAMP、DTSTART、DTEND必填字段- 使用Tapkey支持的IANA时区标识符(如
Europe/Uzhgorod是合法的IANA时区) - 避免使用非标准的字段或格式
内容的提问来源于stack exchange,提问作者Vlad Mashenko
相关产品推荐
相关产品推荐

