larksuite / node-sdk

larksuite open sdk for nodejs
MIT License
131 stars 26 forks source link

EventDispatcher 收到消息后不分发 #70

Closed BobH233 closed 6 months ago

BobH233 commented 6 months ago

主代码:

import { wechaty_client, init_bot } from './wechat_bot.js';
import * as lark from '@larksuiteoapi/node-sdk';
import express from 'express';
import bodyParser from 'body-parser';
import http from 'http';
import dotenv from 'dotenv';

dotenv.config();

const expressPort = 3000;

const app = express();

const FeishuChallengeResponse = (req, res) => {
  console.log(req.body);
  // 检查请求的type是否为"url_verification"
  if (req.body.type === 'url_verification') {
    // 响应中原样返回challenge值
    const response = {
      challenge: req.body.challenge
    };
    // 发送响应
    res.json(response);
  } else {
    // 如果请求的type不是"url_verification",返回错误信息
    res.status(400).json({ error: 'Invalid request type' });
  }
}

const eventDispatcher = new lark.EventDispatcher({}).register({
  'im.message.receive_v1': async (data) => {
      console.log("收到消息了!!!!!!");
  }
});

async function main() {
  // init_bot();
  app.use(bodyParser.urlencoded({ extended: true }));
  app.use(express.json());
  app.post('/', FeishuChallengeResponse);
  app.use('/webhook/event', lark.adaptExpress(eventDispatcher));
  const server = http.createServer(app).listen(expressPort, async()=>{
    if(process.env.LOCALDEV){
      console.log(`Starting server_DEV on port ${expressPort}`);
    }else{
      console.log(`Starting server_PROD on port ${expressPort}`);
    }
  });
}

main();

运行后,向机器人发送代码,能够看到控制台输出收到的负载,但是并没有调用console.log("收到消息了!!!!!!");

控制台输出:

➜  ~/Documents/Coding/FeishuForwardBot yarn dev       
yarn run v1.22.19
$ nodemon main.js
[nodemon] 3.0.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node main.js`
[info]: [ 'event-dispatch is ready' ]
Starting server_PROD on port 3000
{
  schema: '2.0',
  header: {
    event_id: 'x',
    token: 'x',
    create_time: '1704818219853',
    event_type: 'im.message.receive_v1',
    tenant_key: 'x',
    app_id: 'x'
  },
  event: {
    message: {
      chat_id: 'x',
      chat_type: 'p2p',
      content: '{"text":"1"}',
      create_time: '1704818219577',
      message_id: 'om_06f4b2ae7ef8484e85f61b452b342d6b',
      message_type: 'text',
      update_time: '1704818219577'
    },
    sender: {
      sender_id: [Object],
      sender_type: 'user',
      tenant_key: '16ef17ec86da975d'
    }
  }
}
{
  schema: '2.0',
  header: {
    event_id: 'x',
    token: 'x',
    create_time: '1704818219853',
    event_type: 'im.message.receive_v1',
    tenant_key: 'x',
    app_id: 'x'
  },
  event: {
    message: {
      chat_id: 'oc_2de5aadf5942419e63badaccd2375053',
      chat_type: 'p2p',
      content: '{"text":"1"}',
      create_time: '1704818219577',
      message_id: 'om_06f4b2ae7ef8484e85f61b452b342d6b',
      message_type: 'text',
      update_time: '1704818219577'
    },
    sender: {
      sender_id: [Object],
      sender_type: 'user',
      tenant_key: '16ef17ec86da975d'
    }
  }
}
{
  schema: '2.0',
  header: {
    event_id: '6682ace6b9f5f629292b04d0c78667dd',
    token: 'x',
    create_time: '1704818031811',
    event_type: 'im.message.receive_v1',
    tenant_key: 'x',
    app_id: 'x'
  },
  event: {
    message: {
      chat_id: 'x',
      chat_type: 'p2p',
      content: '{"text":"×"}',
      create_time: '1704818031599',
      message_id: 'x',
      message_type: 'text',
      update_time: '1704818031599'
    },
    sender: {
      sender_id: [Object],
      sender_type: 'user',
      tenant_key: '16ef17ec86da975d'
    }
  }
}

机器人配置如下,没有设置Encrypt Key

image
BobH233 commented 6 months ago

抱歉问了个愚蠢的问题... 修改地址为:https://a0a5-114-246-193-113.ngrok-free.app/**webhook/event** 后,一切正常