无法从 Telegram webHook ASP.NET 接收传入的 JSON

2024-01-19

所以问题是我为我的 Telegram 机器人设置了一个 webHook 地址,如下所示:https://api.telegram.org/bot<TOKEN>/setWebHook?url=https://evolhookah.com/Home/ReceiveWebhook

之后,我收到了 JSON 格式的确认,表明从现在起 Telegram 将向该 URL 发送消息。

然后我创建了一个方法 ReceiveWebhook(),它负责处理传入的请求,它过去看起来像这些方法(它们都不起作用):

    public ActionResult ReceiveJSON(int? id)
    {
        Stream req = Request.InputStream;
        req.Seek(0, System.IO.SeekOrigin.Begin);
        string receivedJson = new StreamReader(req).ReadToEnd();
        var bs = new TgDesserialize(); //Class containing JSON desserializing function
        PeopleAttributes people = bs.desserializer(receivedJson); //desserializer manages with desserializing received JSON and returns an object people filled up with necessary values
        return Content(people.firstName);
    }

不幸的是,使用流的想法不起作用,然后我决定以字符串形式接收传入的 JSON,这就是它的样子:

    public ActionResult JSONString(String receivedJSON)
    {
        var bs = new TgDesserialize(); 
        PeopleAttributes people = bs.desserializer(receivedJSON); 
        return Content(people.firstName);
    }

问题:每次收到 Webhook 时,我要么得到 null JSON,要么无法在控制器中正确接收它。

问题:

  1. 有什么可能的方法可以检查 Telegram 在发送 webHook 时是否正在发送带有数据的 JSON?
  2. 为什么我总是得到 NULL,而https://api.telegram.org/bot<TOKEN>/getUpdates显示我在 JSON 中有数据?
  3. 我在控制器中以错误的方式接收 JSON 吗?如果是,处理传入 JSON 的最佳实践是什么?

首先,我建议您使用电报机器人 https://www.nuget.org/packages/Telegram.Bot/图书馆并寻找这个例子Webhook https://github.com/MrRoundRobin/telegram.bot.examples/tree/master/Telegram.Bot.Examples.WebHook。 但总的来说:

  1. 安装Postman https://www.getpostman.com/并向您的控制器发布一条手动消息,例如 telegram webhook 消息。然后确保您的控制器中没有错误。

邮递员样本:

{
    "update_id":10000,
    "message":{
      "date":1441645532,
      "chat":{
         "last_name":"Test Lastname",
         "id":1111111,
         "first_name":"Test",
         "username":"Test"
      },
      "message_id":1365,
      "from":{
         "last_name":"Test Lastname",
         "id":1111111,
         "first_name":"Test",
         "username":"Test"
      },
      "text":"/start"
    }
  1. 如果你的控制器是 true,你必须确保 Webhook 消息是通过 Telegram 发送的。您可以下载ngrok https://ngrok.com/并创建一个到本地主机的 https 代理。

在 ngrok 中使用此命令:

ngrok http 20201

20201 是您的本地主机端口 (localhost:20201)。 现在ngrok给你一个https链接,你必须将该链接设置为你的telegram webhook(就像你说的那样)。 此时,如果 telegram 为您的机器人发送 webhook 消息,那么您可以在本地主机中对其进行调试。

  1. 最后,如果您没有找到问题,您必须阅读Marvin 正在申请专利的 All Things Webhook 指南 https://core.telegram.org/bots/webhooks再次检查所有要求。
  1. Webhooks 支持 IPv4,目前不支持 IPv6。
  2. 接受端口 443、80、88 或 8443 上来自 149.154.167.197-233 的传入 POST。
  3. 能够处理 TLS1.0+ HTTPS 流量。
  4. 提供受支持的、非通配符的、经过验证的或自签名的证书。
  5. 使用与您在设置时提供的域相匹配的 CN 或 SAN。
  6. 提供所有中间证书以完成验证链。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法从 Telegram webHook ASP.NET 接收传入的 JSON 的相关文章

  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 使用 JSON 的 Pentaho HTTP Post

    我是 Pentaho 的新手 我正在尝试执行以下工作流程 从数据库中读取一堆行 做一些转换 将它们以 JSON 格式发布到 REST Web 服务 我已经使用输入步骤和 Json 输出步骤解决了前两个问题 但是 我在执行最后一步时遇到两个问
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • JWT - 配置授权服务器并将颁发者设置为其本身

    我正在尝试按照本指南设置授权服务器 http bitoftech net 2014 10 27 json web token asp net web api 2 jwt owin authorization server http bito
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • CUDA 就地转置错误

    我正在实现一个 CUDA 程序来转置图像 我创建了 2 个内核 第一个内核进行了异位转置 并且适用于任何图像尺寸 然后我创建了一个用于方形图像就地转置的内核 但是 输出不正确 图像的下三角形被转置 但上三角形保持不变 生成的图像在对角线上有
  • 如何在 android room 和 rxjava 2 中插入数据并获取 id 作为输出参数?

    插入查询 Insert onConflict OnConflictStrategy REPLACE long insertProduct Product product product id is auto generated 查看模型 p
  • tvos UISegmentedControl 焦点样式不改变

    我想在 tvOS 中突出显示 UISegmentedControl 时更改其背景颜色 Normally Segment display like following When change focus for change selected
  • 训练神经网络时出现极小或 NaN 值

    我正在尝试在 Haskell 中实现神经网络架构 并在 MNIST 上使用它 我正在使用hmatrix线性代数包 我的训练框架是使用pipes包裹 我的代码可以编译并且不会崩溃 但问题是 层大小 例如 1000 小批量大小和学习率的某些组合
  • 如何将 DATETIME 转换为 mysql 中的 DATE?

    我的查询是这样的 我有一堆条目 我想按日期对它们进行分组 但我的数据库中没有日期 而是有一个日期时间字段 我该怎么办 select from follow queue group by follow date cast follow dat
  • 反序列化 JSON 对象的一部分并将其序列化回来,其余属性保持不变

    我有一些 JSON 想要将其反序列化为 C 类的实例 但是 该类并不具有与原始 JSON 匹配的所有字段 属性 我希望能够修改类中的属性值 然后将其序列化回 JSON 并且原始 JSON 中的剩余字段和属性仍然完好无损 例如 假设我有以下
  • 强制 TkInter Scale 滑块捕捉到鼠标

    当 GUI 有 TkInter 时Scale当他们单击刻度上的某个位置时 默认行为似乎是沿着刻度向鼠标方向滑动滑块 然后意外地经过鼠标 我想要的是让滑块在用户单击滑块上的任意位置时始终跳转到并保持连接到用户的鼠标点 如果他们单击刻度上的特定
  • Int 和 Integer 有什么区别?

    在 Haskell 中 a 和 a 有什么区别Int and an Integer 答案记录在哪里 Integer 是任意精度 类型 它将保存任何数字 no 无论多大 直到极限 你机器的内存 这意味着你从来没有 算术溢出 在另一 手也意味着
  • 重写 Wildfly 引擎

    我想知道是否可以在没有任何第三方库的情况下使用 Wildfly 应用程序服务器的重写引擎 我尝试过使用重写阀 https help openshift com hc en us articles 202398810 How to redir
  • Rails 控制器中的实例和类变量

    我是 Rails 和 ruby 的新手 我正在研究类和实例变量的概念 我理解其中的区别 但是当我在 Rails 中使用控制器进行尝试时 它让我感到困惑 我所做的是在类方法之外声明一个类和实例变量 class BooksController
  • 有没有办法强制使用 Zend_Auth 进行身份验证?

    我正在使用 Zend Auth 和 cookie 会话持久性 我似乎无法弄清楚如何强制使用此类进行身份验证 有没有办法强制 Zend Auth 相信它已经作为用户进行身份验证 Zend Auth getInstance gt getStor
  • 直接自引用导致循环超类问题 JSON

    我尝试了在搜索时发现的几件事 但没有任何帮助 或者我没有正确实现它 我收到错误 Direct self reference leading to cycle through reference chain io test entity bo
  • 创建覆盖 ImageView 动画 Google 地图

    我正在尝试使我的叠加图像执行以下操作 地图的 onClick onDrag 在地图中间显示恒定图像 这是一个引脚 onTouchUp 将标记图像更改为加载标记和一次数据 加载完整更改将图像加载到带有文本的新图像 这是与我的问题非常相似的解决
  • 如何让我的自定义帐户类型显示在 Android 联系人应用程序中?

    我已经创建了一个自定义帐户类型 并且可以在 android ContactsContract ContentProvider 中成功创建该类型的联系人 但我在弄清楚如何在默认联系人应用程序中编辑联系人时显示我的自定义帐户标签和图标时遇到了很
  • 为什么 git 将我的分支名称前缀大写?

    我有一组非常简单的 git 命令 这会导致一些奇怪的行为 显示我当前的本地分支机构 并查看我在release beta1 git branch develop master release beta1 创建一个bugfix somefeat
  • System.Net.WebRequest 不尊重主机文件

    有没有办法获得System Net WebRequest or System Net WebClient尊重hosts or lmhosts file 例如 在我的主机文件中 我有 10 0 0 1 www bing com 当我尝试在浏览
  • 使用 async/await 有什么优点?

    我正在阅读几篇文章并观看一些有关如何在 JavaScript 中使用 async await 的视频 似乎唯一的原因是将异步代码转换为同步代码 并使代码更具可读性 但这并不打算在这个问题中讨论 因此 我想了解使用这些语句是否有更多原因 因为
  • 如何使用 CKFinder Javascript API?

    有趣的问题 但老实说我无法访问 例如 CKFinder dataTypes Folder http docs cksource com ckfinder 2 x api symbols CKFinder dataTypes Folder h
  • 如果我们在管道中包含转换器,scikit-learn 的“cross_val_score”和“GridsearchCV”的 k 倍交叉验证分数是否有偏差?

    数据预处理器 例如 StandardScaler 应用于 fit transform 训练集 并且仅变换 不拟合 测试集 我希望相同的拟合 转换过程适用于用于调整模型的交叉验证 然而 我发现cross val score and GridS
  • 无法从 Telegram webHook ASP.NET 接收传入的 JSON

    所以问题是我为我的 Telegram 机器人设置了一个 webHook 地址 如下所示 https api telegram org bot