是否可以使用 multipart/form-data 发送 RingCentral 短信/彩信?

Is it possible to send RingCentral SMS / MMS using multipart/form-data?

创建 SMS 消息端点的 OpenAPI 规范包括以下请求内容类型:

  consumes:
  - application/json
  - multipart/mixed
  - multipart/form-data

我在 API 参考中找到了包含 multipart/mixed 示例的短信/彩信说明,但没有看到任何有关使用 multipart/form-data 的信息。我对发送文件特别感兴趣。

https://developers.ringcentral.com/api-reference/SMS/createSMSMessage

相同的 API 参考显示支持 multipart/form-datamultipart/mixed 发送传真。

https://developers.ringcentral.com/api-reference/Fax/createFaxMessage

由于 API 都发送文件和元数据,所以我想知道短信 API 是否也支持 multipart/form-data,如果支持,如何发送?

不,好像不是这样。

您为 SMS 消息链接的示例使用 multipart/mixed 将 API 调用本身(它又作为 application/json 发送)与作为彩信 (image/png).

multipart/form-data 在传真 API 中的使用特定于包含特定元数据的方式,但 SMS/MMS 没有等效的系统,因为它们都需要该特定元信息编码为单个 JSON 文档或 multipart/mixed 消息的 JSON 元素。

要发送 文件 ,但是 multipart/mixed 没问题。您的请求将类似于:

POST /restapi/v1.0/account/403391985008/extension/403391985008/sms
Content-Type: multipart/mixed; boundary=Boundary_1_14413901_1361871080888

--Boundary_1_14413901_1361871080888
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: 8bit

{"to" :[{"phoneNumber": "+18772004569"},{"phoneNumber": "+18772094569"}],
"text" :"hello",
"from" :{"phoneNumber": "+18882004237"}}

--Boundary_1_14413901_1361871080888
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="filename.zip"

[Some encoded binary stream here ...]

--Boundary_1_14413901_1361871080888--

由您正确设置文件的 MIME 类型并确保内容已编码。这里的关键点是 message 信息编码在多部分消息的第一个 JSON 组件中,而 file 附加到彩信在第二位编码。

multipart/form-data可以发送如下例子:

POST / HTTP/1.1
HOST: platform.ringcentral.com/restapi/v1.0/account/~/extension/~/sms
Authorization: Bearer <MyToken>
Content-Type: multipart/form-data; boundary=12345

--12345
Content-Disposition: form-data; name="to"

+16505550101
--12345
Content-Disposition: form-data; name="to"

+16505550102
--12345
Content-Disposition: form-data; name="from"

+16505550100
--12345
Content-Disposition: form-data; name="text"

Hello World
--12345
Content-Disposition: form-data; name="attachment" filename="picture.jpg"

content of picture.jpg ...
--12345--

这可以使用 curl 完成,如下所示:

curl -XPOST https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~/sms \
-H 'Authorization: Bearer <MyToken>' \
-F 'to=+16505550101' \
-F 'to=+16505550102' \
-F 'from=+16505550100' \
-F 'text=Hello World' \
-F 'attachment=@picture.jpg'