chat-adapter-asana
v0.1.0
Published
Asana adapter for Chat SDK — task comment threads
Maintainers
Readme
chat-adapter-asana
Asana adapter for Chat SDK. Maps Asana task comment threads to the Chat SDK Thread/Message model.
Installation
npm install chat chat-adapter-asanaUsage
import { createMemoryState } from '@chat-adapter/state-memory'
import { Chat } from 'chat'
import { createAsanaAdapter } from 'chat-adapter-asana'
const bot = new Chat({
userName: 'asana-bot',
adapters: {
asana: createAsanaAdapter({
accessToken: process.env.ASANA_ACCESS_TOKEN!,
}),
},
state: createMemoryState(),
})
bot.onNewMention(async (thread, message) => {
await thread.post('Hello from Asana!')
})
// Wire up the webhook in your HTTP framework
// e.g. Next.js App Router:
export async function POST(request: Request) {
return bot.webhooks.asana(request)
}Environment variables
| Variable | Required | Description |
|----------|----------|-------------|
| ASANA_ACCESS_TOKEN | Yes | Personal access token or service account token |
| ASANA_WEBHOOK_SECRET | No | Stored automatically during webhook handshake |
Configuration
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| accessToken | string | ASANA_ACCESS_TOKEN | Asana API access token |
| baseUrl | string | "https://app.asana.com/api/1.0" | Asana API base URL |
| userName | string | "asana-bot" | Bot display name |
| logger | Logger | ConsoleLogger | Custom logger instance |
Platform setup
- Create an Asana service account or use a personal access token from Asana Developer Console
- Set up a webhook by calling the Asana webhooks API targeting your endpoint:
curl -X POST https://app.asana.com/api/1.0/webhooks \ -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "resource": "<project_gid>", "target": "https://your-domain.com/api/webhooks/asana", "filters": [ { "resource_type": "story", "action": "added" } ] } }' - The adapter automatically handles the webhook handshake (responds to
X-Hook-Secretheaders) - Set the webhook URL to
https://your-domain.com/api/webhooks/asana
Concept mapping
| Asana | Chat SDK |
|-------|----------|
| Task | Thread |
| Story (comment) | Message |
| Story author | message.author |
| Like on a story | Reaction (heart) |
| @mention in comment | Mention detection |
Features
- Webhook handshake and HMAC-SHA256 signature verification
- Task comment threads (post, edit, delete)
- Message history (fetch task stories)
- Reactions (like/unlike stories)
- @mention detection
- Rich text support (Asana HTML to mdast)
Thread ID format
asana:{taskGid}Task GIDs are Asana's numeric identifiers for tasks.
License
MIT
