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

问题描述 投票:0回答:1

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

有谁知道如何构建以下两行来获得一个工作的内联Telegram Bot键盘?

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

结束功能

json string vba bots telegram
1个回答
0
投票

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

 strMarkup = "{""inline_keyboard"":[[{""text"":""A"",""callback_data"":""A1""}," & _
             "{""text"":""B"",""callback_data"":""C1""}]]}"

 strPostData = "{""chat_id"": """ & strChatID & """, ""text"": """ & _
              strMessage & """, ""reply_markup"": " & strMarkup & "}"
© www.soinside.com 2019 - 2024. All rights reserved.