云服务器内容精选

  • 申请5G消息公测体验 根据企业需求,用户可以通过华为云官网,申请5G消息业务公测体验。 进入5G消息产品首页,点击“公测体验”。 点击“立即申请”,填写申请公测信息。 填写完所有信息后,勾选“同意《公测试用服务协议》”,点击“申请公测”。 企业用户申请华为公测体验通过后,将同时收到公测申请已经审核通过邮件和服务号接入信息通知邮件,其中服务号接入信息通知邮件包含服务号信息和连接器信息。 5G消息公测申请咨询接口人:邱涛,电话:18061610855 邮箱:qiutao7@h-partners.com
  • 5G消息开通备案管理 进入5G消息控制台后,如果已开通了5G业务,则会直接进入应用管理页面,如果未开通,则弹出“开通5G消息业务”提示窗口。 按照需求开通视频短信回落或短信回落功能,单击我已阅读《 5G消息服务 声明》、《视频短信服务协议》和《短信服务协议》。 单击“下一步”后,进入“5G消息开通备案管理”页面,可以新增5G消息开通备案。 新增5G消息开通备案。 单击“新增”,进入“5G消息开通备案管理-新增”页面。 参考页面提示,填写5G消息开通备案的基本信息和签名信息。 单击“提交”,完成新增备案。 提交后,系统将根据签名信息内容,自动生成相同名称的短信签名和视频短信签名。您可以通过“短信审核详情”和“视频短信审核详情”页面进行查看。 在“5G消息开通备案管理”页面,输入“企业名称”,可以查询到对应企业的开通备案记录。 只有审核通过的5G消息开通备案,才能再次新增视频短信签名和短信签名。 如果5G消息开通备案已审核通过,但视频短信签名或短信签名报备不通过时,您可以修改被驳回的签名报备记录,再重新提交备案申请。 如果5G消息开通备案未审核通过,则不允许新增、修改视频短信签名和短信签名报备记录(即使已经驳回也不允许修改和新增)。此时,您可以提交新的备案申请,并同时申请短信及视频短信签名。或者,您也可以修改原有的5G消息开通备案申请,在提交并通过审核后,补充添加短信和视频短信签名。 同一企业的相同区域只能备案一次,不能重复备案。若页面提示”已存在相同区域的相同企业的备案申请记录“,请检查是否存在正在审核或审核已通过的备案记录。若正在审核,请等待审核完成。若已审核通过,请在原备案记录上进行新增签名操作。 根据实际需要,您可选择执行如下操作: 操作列中单击“5G消息业务开通详情”,可以查看5G消息业务的开通详情。 、 操作列中单击“短信审核详情”,可以查看短信审核详情。 只有审批通过的5G消息开通备案,才能单击签名信息区域的“新增”,在弹出页面中新增短信签名。 操作列中单击“视频短信审核详情”,可以查看视频短信审核详情。 只有审批通过的5G消息开通备案,才能单击签名信息区域的“新增”,在弹出页面中新增视频短信签名。
  • 5G消息使用流程 任务 操作步骤 01 入驻华为云 注册华为账号 并开通华为云:点击注册页面,详细操作请参考注册华为账号并开通华为云。 企业实名认证:点击进行实名认证。 02 申请5G消息公测体验 企业用户申请5G消息公测体验 03 线上用户开通5G消息业务 企业用户线上注册开通5G消息业务:5G消息开通备案管理 04 发送5G消息 企业用户5G消息应用开发。 企业用户上行地址URL固定菜单配置申请。 05 5G消息增强版支持回落视频短信场景 视频短信套餐购买路径:iTA官网-产品服务-消息-视频短信。 企业用户在ITA官网购买视频短信套餐时,需要勾选H5 chatbot能力。 利用5G消息降级接口,同时兼容5G消息增强版以及5G消息标准版下发。
  • 代码样例 import static java.nio.charset.StandardCharsets.UTF_8; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; /** * 功能描述 */ public class FileDownload { /** * 正确码 * */ public static final int SUC CES S_VALUE = 200; /** * 错误码 * */ public static final int ERR_VALUE = 204; private FileDownload() { } /** * 文件下载功能 * * @param args * @throws IOException * */ public static void main(String[] args) throws IOException { Logger logger = Logger.getLogger(FileDownload.class.getName()); logger.setLevel(Level.WARNING); InputStream is; String url = "http://127.0.0.1:8323/openchatbot/v2/" + "sip:chatbotid32test1@botplatform.rcs.chinamobile.com/files"; URL realUrl = new URL(url); HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); // 设置请求方式 connection.setRequestMethod("GET"); connection.setRequestProperty("Authorization", "Username=\"appId32test1\",Password=\"******\""); connection.setRequestProperty("X-WSSE", "UsernameToken Username=\"appId32test1\""); connection.setRequestProperty("File-Location", "http://10.134.204.203:8087/Content111"); connection.connect(); int status = connection.getResponseCode(); if (status != SUCCESS_VALUE) { if (status == ERR_VALUE) { logger.warning("No Content,sucess,nobody。"); is = connection.getInputStream(); } else { // 400/401 logger.warning("err"); is = connection.getErrorStream(); } } else { // 200 logger.warning("OK,DELETE"); is = connection.getInputStream(); } BufferedReader br; br = new BufferedReader(new InputStreamReader(is, UTF_8)); String line; StringBuilder result = new StringBuilder(); // 读取数据 while ((line = br.readLine()) != null) { result.append(line); } // 关流操作,这个很重要 is.close(); br.close(); // 关闭连接 connection.disconnect(); logger.warning("mabye is null" + result.toString()); } }
  • 数据准备 序号 字段 数据类型 可选属性 描述 1 serverRoot string M 服务器基础URL: hostname(或ip)+port+base path Port和base path可选 例: ip:port/openchatbot 2 apiVersion string M 客户端想使用的API版本号. 例: “v2”. 3 chatbotAddress string M 行业消息的统一服务地址,客户端可根据此地址将所有通知集合展现。 chatbotAddress是5G云服务平台分配给购买者的chatbotID。如果您已经购买了5G消息应用资产,则可以登录消费者门户,选择”应用管理”查看chatbotID。
  • 消息样例 这个是传入的请求 urlhttp://10.120.207.128:8323/openchatbot/v2/sip:chatbotid32test1@botplatform.rcs.chinamobile.com/files 以下是请求参数信息--- {"File":{"fileId":"12341234","fileSize":20,"status":"OK","fileUrl":"src/1.txt","validity":""}} 以上是请求参数信息--- 以下是获取响应信息=== conn.getResponseCode():200 conn.getURL():http://10.120.207.128:8323/openchatbot/v2/sip:chatbotid32test1@botplatform.rcs.chinamobile.com/files conn.getRequestMethod():POST conn.getContentType():application/xml conn.getReadTimeout():0 conn.getResponseMessage():OK url.getDefaultPort():80 url.getFile():/openchatbot/v2/sip:chatbotid32test1@botplatform.rcs.chinamobile.com/files url.getHost():10.120.207.128 url.getPath():/openchatbot/v2/sip:chatbotid32test1@botplatform.rcs.chinamobile.com/files url.getPort():8323 url.getProtocol():http url.getQuery():null url.getRef():null url.getUserInfo():null 以上是获取响应信息===DDD= status:200
  • 消息样例 resultMsg.toString(){"senderAddress":"******","senderName":"Default Name","address":"******","destinationAddress":"******","clientCorrelator":"567895","outboundIMMessage":{"contributionID":"c67771cf-bd31-483e-8f8a-479df74db92e","storeSupported":"true","bodyText":"******","reportRequest":["Delivered","Displayed","Failed"],"conversationID":"fSFDSFDR$%#$%$%$%","subject":"Default Subject","shortMessageSupported":"false","contentEncoding":"utf8","contentType":"multipart/mixed; boundary=\"next\"","serviceCapability":[{"capabilityId":"ChatbotSA","version":"+g.gsma.rcs.botversion=\"#=1\""},{"capabilityId":"ChatbotSA222","version":"+g.gsma.rcs.botversion=\"#=1\""}]}}
  • 消息样例 resultMsg.toString(){"senderAddress":"******","senderName":"Default Name","address":"******","destinationAddress":"******","clientCorrelator":"567895","outboundIMMessage":{"contributionID":"c67771cf-bd31-483e-8f8a-479df74db92e","storeSupported":"true","bodyText":"******","reportRequest":["Delivered","Displayed","Failed"],"conversationID":"fSFDSFDR$%#$%$%$%","subject":"Default Subject","shortMessageSupported":"false","contentEncoding":"utf8","contentType":"multipart/mixed; boundary=\"next\"","serviceCapability":[{"capabilityId":"ChatbotSA","version":"+g.gsma.rcs.botversion=\"#=1\""},{"capabilityId":"ChatbotSA222","version":"+g.gsma.rcs.botversion=\"#=1\""}]}}
  • 消息样例 resultMsg.toString(){"senderAddress":"******","senderName":"Default Name","address":"******","destinationAddress":"******","clientCorrelator":"567895","outboundIMMessage":{"contributionID":"c67771cf-bd31-483e-8f8a-479df74db92e","storeSupported":"true","bodyText":"******","reportRequest":["Delivered","Displayed","Failed"," SMS "],"conversationID":"fSFDSFDR$%#$%$%$%","subject":"Default Subject","shortMessageSupported":"false","contentEncoding":"utf8","contentType":"multipart/mixed; boundary=\"next\"","serviceCapability":[{"capabilityId":"ChatbotSA","version":"+g.gsma.rcs.botversion=\"#=1\""},{"capabilityId":"ChatbotSA222","version":"+g.gsma.rcs.botversion=\"#=1\""}]}}
  • HTTP错误码 序号 错误码 描述 1 200 OK,GET请求成功,响应消息有消息体。 2 201 Created,POST/PUT请求成功,响应消息有消息体。 3 204 No Content,成功,响应消息没有消息体。 4 206 OK,GET请求成功,Partial Content 5 400 Bad Request ,客户端请求的语法错误,服务器无法理解 6 403 Forbidden,服务器拒绝执行 7 404 Not Found,服务器无法根据客户端的请求找到资源 8 406 Not Acceptable,服务器无法根据客户端请求的内容特性完成请求 9 408 Request Timeout ,请求超时 10 503 Server Unavailable,服务器没有准备好处理请求
  • Network API错误码 序号 HTTP错误码 Network API错误码 描述 1 200 SVC1000 Success -成功 2 403 SVC4001 query user info fail -查询用户信息失败 3 400 SVC0002 msg decode fail -解码失败 4 500 SVC4001 require apurce fail -申请资源失败 5 501 SVC4001 query file status fail -查询文件状态失败 6 500 SVC4001 encode fail -编码失败 7 500 SVC4001 base64 decode fail -Base64解码失败 8 500 SVC4001 generate file path fail -生成文件路径失败 9 500 SVC4001 get file info fail -获取文件信息失败 10 500 SVC4001 get file domain index fail -获取域索引失败 11 500 SVC4001 insert databases fail -写入数据库失败 12 500 SVC4001 get httpserver node fail -查询文件服务器节点失败 13 500 SVC4001 internal communication fail -内部通信失败 14 500 SVC4001 file transfer fail -文件传输失败 15 500 SVC4001 illegal platform identity -非法的平台标识 16 403 POL0009 Maximum number of requests exceeded -消息流控 17 400 SVC0002 AO msg service capability invalid -应用发起消息所带业务标识校验失败 18 603 SVC4001 file size overlimit -文件大小超过平台限制 19 500 SVC4001 query session infomatrion timeout -从查询会话信息超时 20 500 SVC4001 insert session infomatrion timeout -记录会话信息超时 21 500 SVC4001 query report relationship timeout -查询回执对应关系超时 22 403 SVC5201 service is shutdown -用户已停机 23 500 SVC4001 when get shorturl, msg expire -获取短链时,消息已经过期 24 400 SVC4001 a2p message allow fallback sms, but sms port number not exist -MaaP消息允许回落短信,但短信端口号不存在 25 400 SVC4001 a2p message allow fallback sms, but sms content not exist -MaaP消息允许回落短信,但短信内容不存在 26 500 SVC4001 query report relationship failed -查询回执对应关系失败 27 400 SVC4001 Msg Recived has expired -接收到的消息已过期 28 400 SVC4001 A2P message can not fall back to mms or sms -消息无法回落 29 403 SVC4001 query user np info fail -查询用户NP信息失败 30 500 SVC4001 msg expired -消息过期 31 404 SVC5001 dest user account not exist -被叫用户信息不存在 32 500 SVC4001 query dest userinfo failed -被叫用户信息查询失败 33 480 SVC4001 dest user offline -被叫用户离线 34 500 SVC4001 get remote file failed -获取远端文件响应失败 35 500 SVC4001 query original message failed -从数据库查询原始消息失败 36 400 SVC0002 invalid method or url -Maap请求method/url非法 37 400 SVC0002 invalid AS request -AS请求非法 38 400 SVC0002 parse xml fail -xml解析失败 39 500 SVC0001 bulid xml fail -xml构造失败 40 400 SVC0003 missing necessary field -缺少必填字段 41 403 POL0009 flow control interception -流控拦截 42 500 SVC0001 set to db fail -写库失败 43 500 SVC0001 get from db fail -读库失败 44 500 SVC0001 set to db timeout -写库超时 45 500 SVC0001 get from db timeout -读库超时 46 404 SVC0004 send request to as fail -发送至AS失败 47 408 SVC0001 AS response timeout -AS响应超时 48 503 SVC2001 alloc memory fail -资源分配失败 49 500 SVC2001 put into hash fail -会话信息保存失败 50 500 SVC2001 get from hash fail -会话信息读取失败 51 500 SVC2001 invalid http link -http链路异常 52 500 SVC0001 interface inner error -接口内部错误 53 404 SVC0004 send request to ap fail -发送至Maap失败 54 408 SVC0001 Maap response timeout -Maap响应超时 55 400 SVC0002 Http response xml parse fail -Http响应xml解析失败 56 400 SVC0002 Maap response invalid -Maap响应非法 57 400 SVC0002 request field invalid -请求字段非法 58 NA SVC6001 peer node unreachable or no usable node -对端节点不可及/无可用节点(SMS) 59 NA SVC6001 send message to peer ndoe failed -向短信中心节点投递失败 60 NA SVC6001 routing failed -路由失败(SMS) 61 NA SVC6001 VMSC:limited due to MS roaming -用户漫游,无法接收 62 NA SVC6001 service barred 或 operation barred -用户停机 63 NA SMS sms success report -回落短信成功 64 NA SVC6001 Unknown Subscriber -短信下发返回未知用户错误。 65 NA SVC6001 Unmarked Subscriber -短信下发返回未定义用户错误。 66 NA SVC6001 HLR:illegal subscriber -短信下发返回非法用户错误。 67 NA SVC6001 teleservice not supported -短信下发返回电信业务不支持错误。 68 NA SVC6001 call forbidden -短信下发返回呼叫被禁止错误。 69 NA SVC6001 VMSC:subscriber absent -短信下发返回用户不在服务区错误。 70 NA SVC6001 HLR:resource not available due to congestion -短信下发返回HLR消息等待队列满错误。 71 NA SVC6001 HLR:data lacked -短信下发返回数据丢失错误。 72 NA SVC6001 HLR:unexpected data -短信下发返回意外数据错误。 73 NA SVC6001 MS error -短信下发返回MS端错误。 74 NA SVC6001 SMS not supported by MS -短信push回执-下发返回MS未装备错误。 75 NA SVC6001 MS store is full -短信下发返回手机内存满错误。 76 NA SVC6001 illegal device -短信下发返回非法设备错误。 77 NA SVC6001 failure because the subscriber is busy -短信下发返回用户忙错误。 78 NA SVC6001 VMSC:the called MS poweroff -短信下发返回用户关机错误。 79 NA SVC6001 VMSC:no response -短信下发后, MSC无应答。 80 NA SVC6001 HLR:no response -短信下发后, HLR无应答。 81 NA SVC6001 VMSC:the service not supported by the peer -短信下发后,MSC拒绝。 82 NA SVC6001 HLR:the service not supported by the peer -短信下发后,HLR拒绝。 83 NA SVC6001 HLR:service not complete -短信下发返回HLR系统错误。 84 NA SVC6001 VMSC:service not complete -短信下发返回MSC系统错误. 85 NA SVC6001 HLR:illegal destionation SCCP address -短信下发后,由于目的信令点或信令转接点SCCP无法传送该消息。 86 NA SVC6001 sms report-peer node unreachable or no usable node -短信回执对端节点不可及/无可用节点(SMS) 87 NA SVC6001 sms report-send message to peer ndoe failed -短信回执向短信中心节点投递失败 88 NA SVC6001 sms report-message routing failed -短信回执路由失败(SMS) 89 NA SVC6001 sms report-VMSC:limited due to MS roaming -短信回执用户漫游,无法接收 90 NA SVC6001 sms report-service barred 或 sms report-operation barred -短信回执用户停机 91 NA SVC6001 Unknown Subscriber 或 sms report-Unknown Subscriber -短信回执返回未知用户错误。 92 NA SVC6001 sms report-Unmarked Subscriber -短信回执返回未定义用户错误。 93 NA SVC6001 sms report-HLR:illegal subscriber -短信回执返回非法用户错误。 94 NA SVC6001 sms report-teleservice not supported -短信回执返回电信业务不支持错误。 95 NA SVC6001 sms report-call forbidden -短信回执返回呼叫被禁止错误。 96 NA SVC6001 sms report-VMSC:subscriber absent -短信回执返回用户不在服务区错误。 97 NA SVC6001 sms report-HLR:resource not available due to congestion -短信回执返回HLR消息等待队列满错误。 98 NA SVC6001 sms report-HLR:data lacked -短信回执返回数据丢失错误。 99 NA SVC6001 sms report-HLR:unexpected data -短信回执返回意外数据错误。 100 NA SVC6001 sms report-MS error -短信回执返回MS端错误。 101 NA SVC6001 sms report-SMS not supported by MS -短信回执-下发返回MS未装备错误。 102 NA SVC6001 sms report-MS store is full -短信回执返回手机内存满错误。 103 NA SVC6001 sms report-illegal device -短信回执返回非法设备错误。 104 NA SVC6001 sms report-failure because the subscriber is busy -短信回执返回用户忙错误。 105 NA SVC6001 sms report-VMSC:the called MS poweroff -短信回执返回用户关机错误。 106 NA SVC6001 sms report-VMSC:no response -短信回执, MSC无应答。 107 NA SVC6001 sms report-HLR:no response -短信回执, HLR无应答。 108 NA SVC6001 sms report-VMSC:the service not supported by the peer -短信回执,MSC拒绝。 109 NA SVC6001 sms report-HLR:the service not supported by the peer -短信回执,HLR拒绝。 110 NA SVC6001 sms report-HLR:service not complete -短信回执返回HLR系统错误。 111 NA SVC6001 sms report-VMSC:service not complete -短信回执返回MSC系统错误. 112 NA SVC6001 sms report-HLR:illegal destionation SCCP address -短信回执, 113 400 SVC0003 invalid maap platform id -因在AO接口产生发送方鉴权失败 114 400 SVC4001 receiver not local area user in application platform send process -在AO接口产生接收方鉴权失败 115 400 SVC0002 AO msg service capability invalid -因在AO接口产生5G消息系统拒绝服务 116 400 SVC4001 a2p msg can not fallback xms -在AO接口,接收方为系统黑名单用户 117 NA SVC1501 no capability -无能力 118 403 POL0003 dest address out of bounds -由于SP群发地址过多,超过系统设置从而导致失败
  • 发送状态报告通知请求示例 POST /openchatbot/v2/DeliveryInfoNotification HTTP/1.1 Authorization: Username="chatbottest12swt70",Password="******" Content-Type: application/json Date: Sun, 28 Jun 2020 06:23:33 GMT Accept: */* Accept-Encoding: gzip, deflate, br Cookie: JSESSIONID=A4F1AE0967E87AD57CF106D295505CA4 traceUniqueID: 504021504652012181433190002002 Host: 10.179.126.105:8451 Connection: close Content-Length: 358 { "deliveryInfo": { "address": "tel:+8612345678911", "messageId": "2827c3a6-ee61-11ea-a172-fa163e6a8a4e", "deliveryStatus": "DeliveredToTerminal", "description": "SVC5001" }, "link": [ { "rel": "OutboundMessageRequest", "href": "http://example.com/exampleAPI/messaging/v1/outbound/sip%3A12599%40botplatform.rcs.chinamobile.com/requests/27437fcf-aa6e-4656-bdb1-695477cdddd9" } ] }
  • 消息关键参数 发送消息体关键字 序号 字段 数据类型 可选属性 描述 HTTP 请求,响应消息体部分(遵循RFC2616) 1 deliveryInfo DeliveryInfo M 状态报告信息,对应表1 6 link Link数组 O 可选字段,对应源消息resourceURL。 表1 DeliveryInfo(消息报告通知) 序号 字段 数据类型 可选属性 描述 1 address String M 发送回执消息的发送方地址(原消息的目的方地址) 2 deliveryStatus Enum M 消息发送状态 MessageSent 消息已发送到平台,由MaaP产生。 DeliveredToTerminal R CS 消息达到终端 DeliveryImpossible 发送失败 DeliveredToNetwork 运营商网络已转短消息发送 MessageDisplayed 消息已阅 DeliveredToVms 转视频短信发送成功 DeliveredToVmsFailed 转视频短信发送失败 DeliveredToSMS 通道转短信下发成功 DeliveredToSMSFailed 通道转短信下发失败 参见表2详细描述 3 messageId string O 源消息ID 4 description String O 状态报告相关描述,成功和失败回执都通过description增加细分描述信息。 DeliveryImpossible回执填写应用层错误码,具体请参见错误码。 DeliveredToTerminal回执填写,发送UP2.4成功回执填写UP2。 DeliveredToNetwork回执填写,转短成功回执填写 SMS 5 text String O 状态报告相关描述,全部回执都通过此字段增加细分描述信息。 DeliveryImpossible回执填写错误描述,具体请参见错误码。 表2 Chatbot下行消息的状态报告 deliveryStatus deliveryStatus含义 description 业务含义 MessageSent 消息已发出 - 消息已发送到5GMC,由MaaP平台转发到5GMC时产生。 DeliveredToTerminal 以消息的形态达到终端,包括MaaP消息和普通P2P消息送达。 UP2 以Chatbot消息形态投递到终端 DeliveryImpossible 下行消息投递失败 800 不提供网络自动回落的Chatbot消息在5GMC已超过最大可撤回时间 SVCXXX错误码 网络自动回落短信,但发送失败 DeliveredToNetwork 已转短消息发送,即转短信发送到短息终端成功。 SMS 已转短信投递到终端 MessageDisplayed 消息已阅 UP2 终端已点击打开消息
  • 请求消息示例 DELETE /openchatbot/v2/sip:12024.jlf002@botplatform.rcs.chinamobile.com/files HTTP/1.1 tid: 6679391739583830575 Authorization:Username="a20a9716-8577-4e5e-8333-490df5b72e9f", Password=“******” Terminal-type: Chatbot Cache-Control: no-cache Pragma: no-cache Host: 10.120.207.128:8323 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Proxy-Connection: keep-alive Connection: keep-alive
  • 请求消息示例 POST /openchatbot/v2/auditnotification HTTP/1.1 Authorization: Username="appId32itc1",Password="******" tid: 3412316345 Authstatus: 0 Date: Mon, 09 Jun 2020 06:23:33 GMT Content-Type: application/json Accept: */* Postman-Token: e3e074fa-2ff7-4f6b-81a1-24af65d7200c Accept-Encoding: gzip, deflate, br Cookie: JSESSIONID=A3AEA3BBD0158B95AF548971EF430011 traceUniqueID: 504021504652012181504150002002 Host: 10.134.204.203:8087 Connection: close Content-Length: 741 { "file-info": [{ "content-type": "image/png", "data": { "until": "2099-12-31T23:59:59Z", "url": "https://conent-5g.obs.cn-north-4.myhuaweicloud.com:443/content_audit_service/chatbotId/pictures/2d39d4d7-0711-4710-987d-f1d91209b3a7.png" }, "file-name": "logo.png", "file-size": "16307", "type": "file" }, { "content-type": "image/jpeg", "data": { "until": "2099-12-31T23:59:59Z", "url": "https://conent-5g.obs.cn-north-4.myhuaweicloud.com:443/content_audit_service/chatbotId/pictures/91bc7489-c608-4796-ac53-7ef8d9ec8de0.jpg" }, "file-name": "10k1.jpg", "file-size": "9509", "type": "thumbnail" }] }