云函数版本支持POST请求
This commit is contained in:
parent
0d93c90c23
commit
dcb0662384
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
> 老用户注意:
|
> 老用户注意:
|
||||||
>
|
>
|
||||||
> 目前已更新到2.0版本,2.0版本不需要 `config.yaml` 文件,配置改为从云函数的环境变量中读取,请直接下载 `main.zip` 上传至云函数并且设置环境变量即可。
|
> 自 2.0 版本之后,不再需要 `config.yaml` 文件,配置改为从云函数的环境变量中读取,请直接下载 `main.zip` 上传至云函数并且设置环境变量即可。
|
||||||
|
|
||||||
## 👋 使用方法
|
## 👋 使用方法
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
下载文件 [版本发布页面](https://github.com/riba2534/wecomchan/releases):
|
下载文件 [版本发布页面](https://github.com/riba2534/wecomchan/releases):
|
||||||
|
|
||||||
- [main.zip](https://github.com/riba2534/wecomchan/releases/download/2.0/main.zip) :云函数可执行二进制文件,不用改动,等会直接上传即可。
|
- [main.zip](https://github.com/riba2534/wecomchan/releases/download/2.1/main.zip) :云函数可执行二进制文件,不用改动,等会直接上传即可。
|
||||||
|
|
||||||
### 3. 在腾讯云中创建云函数 & 配置环境变量
|
### 3. 在腾讯云中创建云函数 & 配置环境变量
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
环境变量配置说明
|
环境变量配置说明
|
||||||
|
|
||||||
| key | value | 备注 |
|
| key | value | 备注 |
|
||||||
| :------------: | :----------------------------------------------------------: | :----------------------------------------------------------- |
|
| :------------: | :----------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| `FUNC_NAME` | 填你在上面配置的函数说明 | |
|
| `FUNC_NAME` | 填你在上面配置的函数说明 | |
|
||||||
| `SEND_KEY` | 最终调用HTTP接口时校验是否是本人调用的密钥,随意设置,最终发起HTTP请求携带即可 | |
|
| `SEND_KEY` | 最终调用HTTP接口时校验是否是本人调用的密钥,随意设置,最终发起HTTP请求携带即可 | |
|
||||||
| `WECOM_CID` | 企业微信公司ID | |
|
| `WECOM_CID` | 企业微信公司ID | |
|
||||||
|
@ -77,7 +77,9 @@
|
||||||
|
|
||||||
## 👌 发起HTTP请求测试是否成功
|
## 👌 发起HTTP请求测试是否成功
|
||||||
|
|
||||||
> 当发送的文本中存在有换行符或其他字符时,请把 msg 参数进行 url 编码
|
现已支持 `GET`、`POST` 方法进行请求。
|
||||||
|
|
||||||
|
> 当发送的文本中存在有换行符或其他字符时,请把 msg 参数进行 url 编码(使用 GET 方法注意,POST不需要)
|
||||||
|
|
||||||
### 简单使用:
|
### 简单使用:
|
||||||
|
|
||||||
|
@ -101,12 +103,27 @@
|
||||||
|
|
||||||
> 成员的 ID 在企业微信后台,`通讯录`,点开指定成员资料,有个 `账号` 字段,该字段即为该成员的ID.
|
> 成员的 ID 在企业微信后台,`通讯录`,点开指定成员资料,有个 `账号` 字段,该字段即为该成员的ID.
|
||||||
|
|
||||||
|
### 使用 `POST` 进行请求
|
||||||
|
|
||||||
|
大部分情况下,`GET` 请求已经可以很好的满足发送一些短消息的需求,但是当消息体过长时,云函数可能报参数过长错误,故在 `V2.1` 版本加入 `POST` 请求支持。
|
||||||
|
|
||||||
|
与 `GET` 请求不同的是,`POST` 请求不从 [Query string](https://en.wikipedia.org/wiki/Query_string) 获取参数,所有参数改为从 [HTTP message body](https://en.wikipedia.org/wiki/HTTP_message_body) 中获取,这里要求 Body 中必须是 `JSON` 格式,参数字段名称仍与 `GET` 请求的名称保持一致,且 `json` 的 `key` 和 `value` 必须是 `string` 类型,Body 格式例如:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"sendkey": "123456",
|
||||||
|
"msg_type": "text",
|
||||||
|
"msg": "这是一条POST消息",
|
||||||
|
"to_user": "User1|User2"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### 参数说明:
|
### 参数说明:
|
||||||
|
|
||||||
下表为 GET 请求的参数说明:
|
下表为请求的参数说明(`GET` 与 `POST` 字段名相同):
|
||||||
|
|
||||||
| 参数名称 | 说明 | 是否可选 |
|
| 参数名称 | 说明 | 是否可选 |
|
||||||
| ---------- | ------------------------------------------------------------ | -------- |
|
| ---------- | --------------------------------------------------------------------------------------------------------------- | -------- |
|
||||||
| `sendkey` | 校验是否是本人调用的密钥,随意设置,最终发起HTTP请求携带即可 | 必须 |
|
| `sendkey` | 校验是否是本人调用的密钥,随意设置,最终发起HTTP请求携带即可 | 必须 |
|
||||||
| `msg_type` | 消息类型,目前只有纯文本一种类型,值为 `text` | 必须 |
|
| `msg_type` | 消息类型,目前只有纯文本一种类型,值为 `text` | 必须 |
|
||||||
| `msg` | 消息内容,支持多行和UTF8字符,在程序中构建字符串时加上**换行符**即可,如果有特殊符号,记得使用 `urlencode` 编码 | 必须 |
|
| `msg` | 消息内容,支持多行和UTF8字符,在程序中构建字符串时加上**换行符**即可,如果有特殊符号,记得使用 `urlencode` 编码 | 必须 |
|
||||||
|
|
|
@ -18,16 +18,16 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func WeComChanService(ctx context.Context, event events.APIGatewayRequest) map[string]interface{} {
|
func WeComChanService(ctx context.Context, event events.APIGatewayRequest) map[string]interface{} {
|
||||||
sendKey := getQuery("sendkey", event.QueryString)
|
sendKey := getQuery("sendkey", event)
|
||||||
msgType := getQuery("msg_type", event.QueryString)
|
msgType := getQuery("msg_type", event)
|
||||||
msg := getQuery("msg", event.QueryString)
|
msg := getQuery("msg", event)
|
||||||
if msgType == "" || msg == "" {
|
if msgType == "" || msg == "" {
|
||||||
return utils.MakeResp(-1, "param error")
|
return utils.MakeResp(-1, "param error")
|
||||||
}
|
}
|
||||||
if sendKey != consts.SEND_KEY {
|
if sendKey != consts.SEND_KEY {
|
||||||
return utils.MakeResp(-1, "sendkey error")
|
return utils.MakeResp(-1, "sendkey error")
|
||||||
}
|
}
|
||||||
toUser := getQuery("to_user", event.QueryString)
|
toUser := getQuery("to_user", event)
|
||||||
if toUser == "" {
|
if toUser == "" {
|
||||||
toUser = consts.WECOM_TOUID
|
toUser = consts.WECOM_TOUID
|
||||||
}
|
}
|
||||||
|
@ -74,10 +74,17 @@ func postWechatMsg(accessToken, msg, msgType, toUser string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getQuery(key string, query events.APIGatewayQueryString) string {
|
func getQuery(key string, event events.APIGatewayRequest) string {
|
||||||
value := query[key]
|
switch event.Method {
|
||||||
|
case "GET":
|
||||||
|
value := event.QueryString[key]
|
||||||
if len(value) > 0 && value[0] != "" {
|
if len(value) > 0 && value[0] != "" {
|
||||||
return value[0]
|
return value[0]
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
|
case "POST":
|
||||||
|
return jsoniter.Get([]byte(event.Body), key).ToString()
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue