{"id":18753117,"url":"https://github.com/bottenderjs/bottender-recognizer","last_synced_at":"2026-01-12T05:57:17.709Z","repository":{"id":119418536,"uuid":"113124730","full_name":"bottenderjs/bottender-recognizer","owner":"bottenderjs","description":"Build bottender bots with intent recognizer and action resolver.","archived":false,"fork":false,"pushed_at":"2018-09-20T04:33:34.000Z","size":119,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-11-29T10:48:52.349Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bottenderjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-05T03:03:20.000Z","updated_at":"2021-10-07T08:36:16.000Z","dependencies_parsed_at":"2023-07-16T05:31:03.442Z","dependency_job_id":null,"html_url":"https://github.com/bottenderjs/bottender-recognizer","commit_stats":null,"previous_names":["yoctol/bottender-recognizer"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/bottenderjs/bottender-recognizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottenderjs%2Fbottender-recognizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottenderjs%2Fbottender-recognizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottenderjs%2Fbottender-recognizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottenderjs%2Fbottender-recognizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bottenderjs","download_url":"https://codeload.github.com/bottenderjs/bottender-recognizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottenderjs%2Fbottender-recognizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28335924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T17:24:22.729Z","updated_at":"2026-01-12T05:57:17.705Z","avatar_url":"https://github.com/bottenderjs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bottender-recognizer\n\n[![npm](https://img.shields.io/npm/v/bottender-recognizer.svg?style=flat-square)](https://www.npmjs.com/package/bottender-recognizer)\n[![CircleCI](https://circleci.com/gh/Yoctol/bottender-recognizer.svg?style=shield\u0026circle-token=864a782187e3b51b95c9fdccf815b090fc4abb66)](https://circleci.com/gh/Yoctol/bottender-recognizer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\u003e Build bottender bots with intent recognizer and action resolver.\n\n## Installation\n\n```sh\nnpm install bottender-recognizer\n```\n\n## Definition\n\n### Recognizer\n\n```\n(state, event) =\u003e intent | undefined\n```\n\nExample:\n\n```js\nasync (state, intent) =\u003e ({\n  name: 'INTENT_NAME',\n  payload: {},\n});\n```\n\n### Intent\n\n* `name` - Must have.\n* `payload` - Recommended.\n\nExample:\n\n```js\n{\n  name: \"INTENT_NAME\",\n  payload: {}\n}\n```\n\n### Resolver\n\n```\n(state, intent) =\u003e action\n```\n\nExample:\n\n```js\n(state, intent) =\u003e doSomething;\n```\n\nWith `derivedState` and `derivedParam`:\n\n```\n(state, intent) =\u003e derivedState + derivedParam + action\n```\n\nExample:\n\n```js\n(state, intent) =\u003e ({\n  action: doSomething,\n  derivedState: {\n    x: 1,\n  },\n  derivedParam: {\n    y: 2,\n  },\n});\n```\n\n### Action\n\n```\ncontext =\u003e void\n```\n\nExample:\n\n```js\nasync context =\u003e {\n  // ...\n};\n```\n\nWith parameters:\n\n```\ncontext + param =\u003e void\n```\n\nExample:\n\n```js\nasync (context, param) =\u003e {\n  // ...\n};\n```\n\n## API Reference\n\n### `createHandler({ recognizer, resolver, chatbase, debug })`\n\nIt creates a bottender handler function.\n\n```js\ncreateHandler({\n  recognizer,\n  resolver,\n  chatbase: {\n    apiKey: process.env.CHATBASE_KEY,\n    platform: 'Facebook',\n  },\n  debug: true,\n});\n```\n\n### `combineRecognizers(recognizers)`\n\nIt turns an array of recognizers into a single recognizer that you can pass to `createHandler`.\n\n```js\nconst regex = (state, event) =\u003e {\n  if (event.isText \u0026\u0026 /^Hi$/i.test(event.text)) {\n    return {\n      name: 'GREETING',\n      payload: {\n        // other args...\n      },\n    };\n  }\n};\n\nconst nlu = async (state, event) =\u003e {\n  //...\n};\n\ncombineRecognizers([regex, nlu]);\n```\n\n## License\n\nMIT © [Yoctol](https://github.com/Yoctol/bottender-recognizer)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottenderjs%2Fbottender-recognizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbottenderjs%2Fbottender-recognizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottenderjs%2Fbottender-recognizer/lists"}