
# 接受并处理gupshup发送的上行消息接口
#### 接口功能
接受并处理gupshup发送的上行消息。
#### 使用说明
- 前提条件 正确创建whatsApp渠道配置，选择服务提供商为gupshup。
  
- 详见官方文档：https://docs.gupshup.io/docs/overview
 
#### 接口鉴权
通过gupshup集成商接入WhatsApp使用该鉴权方式。
使用说明：
在AICC测，渠道配置页面，配置webhook密码。
调用whatsappadapter侧接口，请求中添加请求头Authorization，Authorization的值为webhook密码。
#### Headers请求参数
表1请求Headers参数说明 
| 参数名称          | 选取原则 | 参数类型   | 默认值 | 说明                                  |
|:---|:---|:---|:---|:---|
| Content-Type  | 必选   | String | 无   | 固定填 application/json;charset=UTF-8。 |
| Authorization | 必选   | String | 无   | AICC测渠道配置处配置的webhook认证密码            |
   
#### 接口原型
表2接口原型说明 
|   请求方法    |                                                                                                                    POST                                                                                                                    ||
|---|---|---|
| **请求URL** | https://ip:port/social/on/whatsapp/{whatsAppBsp}/message/{channelId} | 其中，ip:port为对外暴露的nslb的ip和port，whatsAppBsp为集成方， channelId为渠道id |
   
#### BODY请求参数
表3请求Body中参数说明 
| 参数名称      | 选取原则 | 参数类型   | 说明                                                                                                                       |
|:---|:---|:---|:---|
| timestamp | 必选   | long   | 用户发送消息的时间；为Unix时间戳（秒）；                                                                                                   |
| type      | 必选   | String | 消息的类型；message（用户消息）                                                                                                      |
| payload   | 必选   | object | 消息的载体；[表4] |
   
 表4payload中参数说明 
| 参数名称    | 选取原则 | 参数类型   | 说明                                                                                                                           |
|:---|:---|:---|:---|
| id      | 必选   | String | 用户消息唯一编码                                                                                                                     |
| source  | 必选   | String | 用户注册whatsapp的手机号                                                                                                             |
| type    | 必选   | String | 消息类型：text（文本）、audio（音频）、image（图片）、video（视频）、location（位置）、button_reply(交互式按钮回复消息)，list_reply(交互式列表回复消息)、quick_reply（模板快速回复消息） |
| payload | 必选   | object | 消息内容；                                                                                                                        |
| context | 可选   | object | 引用消息信息；                                                                                                                      |
   
表5message中参数说明 
| 参数名称        | 选取原则 | 参数类型   | 说明                                                                                                                      |
|:---|:---|:---|:---|
| context     | 可选   | object | 消息引用。[表6]    |
| sender      | 必选   | object | 消息发送人信息。[表7] |
| text        | 可选   | String | 文本消息内容，消息类型为text。                                                                                                       |
| url         | 可选   | String | 多媒体消息，消息类型为音频、视频、图片。                                                                                                    |
| caption     | 可选   | String | 标题，多媒体消息标题。                                                                                                             |
| contentType | 可选   | String | 文件类型。如：image/jpg                                                                                                        |
| name        | 可选   | String | 多媒体文件名。                                                                                                                 |
| latitude    | 可选   | String | 纬度，消息类型为location                                                                                                        |
| longitude   | 可选   | String | 经度，消息类型为location                                                                                                        |
   
 表6context中参数说明 
| 参数名称 | 选取原则 | 参数类型   | 说明               |
|:---|:---|:---|:---|
| id   | 必选   | String | whatsapp侧消息唯一id。 |
| gsId | 必选   | String | gupshup消息唯一id。   |
   
 表7sender中参数说明 
| 参数名称         | 选取原则 | 参数类型   | 说明              |
|:---|:---|:---|:---|
| phone        | 必选   | String | 用户完整号码；包含国家编码；  |
| name         | 必选   | String | 用户昵称            |
| country_code | 必选   | String | 用户的国家编码；如中国为86； |
| dial_code    | 必选   | String | 用户的手机号，不包含国家编码； |
   
#### 响应参数
调用本接口无响应内容。
#### 接口示例
- 请求示例
  ```
  POST /social/on/whatsapp/gupshup/message/202105102694809992
  host: 10.10.10.2:18446
  connection: Keep-Alive
  x-forwarded-for: 10.10.10.3, 10.10.10.4
  x-real-ip: 10.10.10.5
  content-length: 401
  remote-host: 10.10.10.6
  user-agent: java/socket
  Authorization: *************
  content-type: application/json;charset=UTF-8
  accept: */*
  {
      "timestamp": 1743146844100,
      "type": "message",
      "payload": {
          "id": "wamid.HBgNODYxODc2NTkwMjAwMRUCABIYIEVCRTAwQUI4RDEyMDVCNzBCQUU0ODEyOUM0NTQ0RUEzAA==",
          "source": "8618*****1",
          "type": "image",
          "payload": {
              "url": "https://filemanager.gupshup.io/wa/*********",
              "contentType": "image/jpeg",
              "urlExpiry": 1743751644100
          },
          "sender": {
              "phone": "8618*******1",
              "name": "AI****i",
              "country_code": "86",
              "dial_code": "18*****1"
          }
      }
  }
  ```
  
 
