意图交互服务程序协议

http地址：http://14.17.80.241:8088/

post raw body示例：

**初始化SDK：**

```
{
    "messageId": "init",
    "key": "abc",
    "secret": "bcd3lsdf83423948sfd34"
}
```

返回：

```
{
    "result": "True",
    "token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhcHBfa2V5IjoiYWJjIiwiZXhwIjoxNzEwMzAwMzQzfQ.0pJx7JeX2aJBkPWVMPjJlL4eV_4mCiscZccoMCw0KuzrLuwxN500n5ZEx355XRLIK7qIqv2WoIyYre1uT497qQ",
    "message": "Initialization OK"
}
```



websocket地址：ws://14.17.80.241:8088/ws/jwt

消息内容示例：

**创建会话：**

```
{
    "messageId": "createConversation",
    "key": "abc"
}
```

返回：

```
{
    "result": "True",
    "conversationId": "thread_NUV8bFNFjEfdBpYeClHYxTJo",
    "message": "Conversation create succeed"
}
```



**发送消息：**

```
{
    "messageId": "sendMessage",
    "key": "abc",
    "conversationId": "thread_NUV8bFNFjEfdBpYeClHYxTJo",
    "content": "hello"
}
```

返回：

一般对话：

```
{
 "messageId": "sendMessage",
 "conversationId": "thread_NUV8bFNFjEfdBpYeClHYxTJo",
 "type": "text",
 "streamStatus": "start"
}

流输出...

{
 "messageId": "sendMessage",
 "conversationId": "thread_NUV8bFNFjEfdBpYeClHYxTJo",
 "type": "text",
 "streamStatus": "end"
}
```

执行意图指令：

```
{
    "messageId": "sendMessage",
    "conversationId": "thread_Eo5RsU2tQ0Z2K1t5AizwjiPM",
    "type": "function",
    "functionName": "InquireCryptoPriceFromExchange",
    "functionArgs": "{\"cryptocurrencyType\":\"Bitcoin\",\"exchangeName\":\"Coinbase\",\"quoteCurrency\":\"USD\",\"rateBenchmark\":\"default\"}"
}
```



**执行指令结果反馈：**

反馈消息格式：

```
{
    "messageId": "toolCallsResult",
    "key": "abc",
    "conversationId": "thread_3vvS5fLmui4D6ImdsNh8nt2p",
    "content": "已成功创建比特币单链钱包"
}
```

返回格式：
```
{
    "messageId": "toolCallsResult",
    "conversationId": "thread_WySdx2SbouO6cVA9gTnRQ4ja",
    "assistant": "The process of inquiring about the price of Bitcoin on Coinbase was successful. However, the specific price data isn't provided. For detailed price information, you may consider checking directly on the Coinbase platform or through a reliable financial news source."
}
```

流程：先通过http请求进行SDK初始化，key和secret验证通过后返回有效时间为30分钟的jwt，然后用这个jwt 进行websocket 长连接，会话前需先创建会话，拿到会话ID后，后面发送会话消息需要带上会话ID，如果是执行指令消息，在收到回复的指令内容之后，紧接着需要反馈指令执行的结果


---------------



Wallet AI研发设计通信协议草稿V0.32
作者：HAILIN ZHAO
关键词：意图，意图交互，系统，应用程序，GPT，自然语言，AI
iSDK 开发软件包协议：人机意图交互

1.1	意图：创建钱包，Int CreateWalletWithTypes(para1, para2, para3)
参数1：钱包类型
1.	单链（单币种）私钥钱包
2.	单链（单币种）助记词钱包
3.	多链（多币种）私钥钱包
4.	多签钱包（保留）
5.	自定义（多币种）助记词钱包
参数2: 币类型
https://github.com/satoshilabs/slips/blob/master/slip-0044.md#slip-0044--registered-coin-types-for-bip-0044
参数2：是否启用生物识别
1.	TRUE（是）
2.	FALSE（否）
返回值：
a.	成功
b.	失败
i.网络失败
           ii.助记词不正确
           iii.其他错误

1.2	意图：恢复钱包 Int RecoverWallet (para1，para2 )
参数1：钱包构成规则
a.	助记词类型
b.	私钥类型
c.	生物识别类型

参数2: 币类型
https://github.com/satoshilabs/slips/blob/master/slip-0044.md#slip-0044--registered-coin-types-for-bip-0044


返回值：
a.	成功
b.	失败
i.密码不正确
ii. 助记词不正确
iii. 其它错误

1.3	意图：收款 Int ShowCryptoAddressReceive(para1)
参数1：:加密货币类型
1.	比特币
2.	以太坊
3.	…等等
返回值：
a.	成功
b.	失败
i.失败原因

1.4	意图：转账 Int TransferCryptoFromTo(para1, para2, para3)
参数1：加密货币类型
1.	比特币
2.	以太坊
3.	…等等
参数2：收款地址
参数3:   转账金额
返回值：
c.	成功
d.	失败
i. gas不足
ii. 网络拥堵
iii. 其他失败原因

1.5	意图：查询余额 Int InqueryCryptoBalance(para1)

参数1：:加密货币类型
1.	比特币
2.	以太坊
3.	…等等
返回值：
e.	成功
f.	失败
i.失败原因

1.6	意图：查询交易记录 Int ListHistoryTransactionsUsingDate(para1, para2)
参数1：加密货币类型
1.	比特币
2.	以太坊
3.	…等等
参数2: 时间参数
    1. 今天的
    2.刚才的
    3.两天前的
    4.本周的
    5.本月的
    6.全年的
返回值：
a.	成功
b.	失败
i.失败原因

1.7	意图：查询代币当前价格 Int InquireCryptoPriceFromExchange(para1, para2, para3, para4)
参数1：加密货币类型
4.	比特币
5.	以太坊
6.	…等等
参数2: 交易所名
    1. Coinbase
    2. Binance
    3. Okex
    4.Coinlist
参数3: 报价单位
    1.美元
    2.人民币
    3.欧元
    4.日元
    5….
参数4：汇率基准
    1.默认基准（系统偏向的基准）
    2. 国际银行间中间价
    3.纽约
    4.伦敦汇率
    5. 纽约汇率
    6. 欧洲中央银行（ECB）参考汇率
    7. 国际货币基金组织（IMF）特别提款权（SDR）汇率
    8. 外汇市场直接报价与间接报价
    9. 加密货币交易所的直接报价或者C2C报价
返回值：
a.	成功
b.	失败
i.失败原因
1.8	意图：查询钱包中代币种类数量 json CountCryptoKindsQuantity(void)

参数1：无
返回值：
a.	成功则返回一个json字符串
b.	失败返回空串
i.钱包是空的，没有任何加密货币
ii.其他具体原因

1.9	意图：设置交易密码 Int CreatePaymentPin (void)
参数：无（为了安全起见，AI不会要求用户直接告诉它交易密码，这一功能留给app自己处理）
返回值：
c.	成功
d.	失败
i.失败原因

1.10	意图：修改交易密码 Int ChangePaymentPin (void)
参数：无（为了安全起见，AI不会要求用户直接告诉它交易密码，这一功能留给app自己处理）
返回值：
a.	成功
b.	失败
i.失败原因






1.11	意图：扫描二维码 Int ScanQrCode (void)
参数：无
返回值：
a.	成功
b.	失败
i.失败原因


1.12	意图：进行第三方登录 Int LoginHelp (para1)
参数1：签名方式
1.	比特币
2.	以太坊
3.	…等等

返回值：
a.	成功
b.	失败
i.失败原因

