用于电报机器人内联键盘的 VBA Json 字符串



我正在尝试从 VBA 应用程序向我的电报机器人发送内联键盘。我使用的两个字符串导致 HTTP 错误 400 错误请求。

有谁知道如何建立以下两行来获得有效的内联电报机器人键盘?

Public Function SendTelegramMessage(strChatID As String, strMessage As String)
Dim objHTTP As Object
Dim strPostData As String
Dim strMarkup As String
strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""},{""text"":""B"",""callback_data"":""C1""}]]}"
strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & strMessage & """, ""reply_markup"": """ & strMarkup & """}"
Set objHTTP = CreateObject("winhttp.winhttprequest.5.1")
On Error Resume Next
objHTTP.Open "POST", gsTelegramAPIURL & gsTelegramAPIKey & "/sendMessage?", False
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.Send (strPostData)
If Err.Number = 0 Then
    If objHTTP.Status = "200" Then
        Debug.Print "HTTP POST request was succesfull"
    ElseIf objHTTP.Status = "502" Then
        Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
        Set objHTTP = Nothing
        Exit Function
    ElseIf objHTTP.Status = "400" Then
        Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
        Set objHTTP = Nothing
        Exit Function
    Else
        Debug.Print "HTTP status: " & objHTTP.Status & ". HTTP statustext: " & objHTTP.StatusText
    End If
Else
    'Unknown error, probably no internet connection.
    Debug.Print "Error Number: " & Err.Number & " Error Source: " & Err.Source & " Error Description: " & Err.description
End If
Set objHTTP = Nothing

结束功能

试试这个(strMarkup周围没有引号(:

 strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""}," & _
             "{""text"":""B"",""callback_data"":""C1""}]]}"
 strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & _
              strMessage & """, ""reply_markup"": " & strMarkup & "}"

最新更新