Channels & Connectors¶
OpenJarvis มีการเชื่อมต่อ 2 ประเภท:
- Data Connectors — การเข้าถึงข้อมูลส่วนตัวของคุณแบบอ่านอย่างเดียว (Gmail, iMessage, Google Drive ฯลฯ) เพื่อให้เอเจนต์ค้นหาและวิจัยข้ามข้อมูลเหล่านั้นได้
- Messaging Channels — วิธีคุยกับเอเจนต์ของคุณจากโทรศัพท์หรือแพลตฟอร์มอื่น (iMessage/SMS, Slack)
Messaging Channels¶
iMessage & SMS (ผ่าน SendBlue)¶
สิ่งที่มันทำ: ให้เอเจนต์ของคุณมีหมายเลขโทรศัพท์ ส่งข้อความจากโทรศัพท์ เครื่องใดก็ได้ (iPhone ผ่าน iMessage, Android ผ่าน SMS) แล้วเอเจนต์จะตอบกลับ
การตั้งค่า¶
- สร้างบัญชี SendBlue: sendblue.com — มี free tier ให้ใช้
- รับ API credential ของคุณ: Dashboard → API Keys → คัดลอก API Key ID และ API Secret Key
- จดหมายเลขโทรศัพท์ SendBlue ของคุณไว้ — นี่คือหมายเลขที่คนอื่นส่งข้อความมาเพื่อเข้าถึงเอเจนต์ของคุณ
- เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → your agent → แท็บ Messaging → iMessage/SMS → ป้อน API Key ID, API Secret Key และหมายเลขโทรศัพท์
- เอเจนต์จะส่งข้อความ "ack" และทดสอบเพื่อยืนยันว่าทำงานได้
- ตั้งค่า webhook เพื่อให้ข้อความขาเข้าถึงเอเจนต์ของคุณ:
- คุณต้องมี URL สาธารณะ — ใช้ ngrok เพื่อทำ tunnel ไปยังเซิร์ฟเวอร์ในเครื่องของคุณ:
ngrok http 9001 - ลงทะเบียน webhook URL กับ SendBlue:
ทำงานอย่างไร¶
- มีคนส่งข้อความไปที่หมายเลข SendBlue ของคุณ → SendBlue ส่ง webhook ไปยังเซิร์ฟเวอร์ของคุณ
- เอเจนต์ตอบกลับ "Message received! Working on it now..." ทันที
- เอเจนต์วิจัยข้อมูลของคุณ (15-60 วินาที) → ส่งคำตอบเป็น iMessage หรือ SMS
- iMessage (ฟองสีฟ้า) สำหรับอุปกรณ์ Apple, SMS (สีเขียว) สำหรับ Android — เลือกให้อัตโนมัติ
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| ไม่มีการตอบกลับหลังส่งข้อความ | ตรวจสอบว่า ngrok กำลังรันอยู่และลงทะเบียน webhook URL แล้ว |
| "Disconnected" ในแท็บ Messaging | คลิก Reconnect — เซิร์ฟเวอร์อาจ restart ไปแล้ว |
| URL ของ ngrok เปลี่ยน | ลงทะเบียน webhook URL ใหม่กับ SendBlue (ดูขั้นตอนที่ 5) |
| ข้อความทำงานได้ทางเดียวเท่านั้น | Free tier ต้องการให้ผู้ติดต่อส่งข้อความมาที่หมายเลขก่อน |
Slack¶
สิ่งที่มันทำ: DM เอเจนต์ของคุณใน Slack และรับคำตอบวิจัยใน thread
การตั้งค่า¶
วิธีที่เร็วที่สุดคือใช้ App Manifest — วาง JSON นี้เพื่อตั้งค่าทุกอย่างในครั้งเดียว
- ไปที่ api.slack.com/apps → Create New App → From an app manifest
- เลือก workspace ของคุณ แล้ววาง manifest นี้:
{
"display_information": { "name": "OpenJarvis" },
"features": {
"app_home": {
"home_tab_enabled": true,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"bot_user": { "display_name": "OpenJarvis", "always_online": true }
},
"oauth_config": {
"scopes": {
"bot": [
"chat:write", "im:write", "im:read", "im:history",
"users:read", "channels:read", "channels:history",
"app_mentions:read"
]
}
},
"settings": {
"event_subscriptions": { "bot_events": ["message.im"] },
"socket_mode_enabled": true
}
}
- คลิก Create → Install to Workspace → Allow
- คัดลอก Bot User OAuth Token (
xoxb-...) จาก OAuth & Permissions - ไปที่ Basic Information → App-Level Tokens → Generate Token → เพิ่ม scope
connections:write→ คัดลอก token (xapp-...) - เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → your agent → แท็บ Messaging → Slack → วาง token ทั้งสอง
- CLI: token จะถูกเก็บไว้เมื่อคุณ bind channel
ทำงานอย่างไร¶
- คุณ DM @OpenJarvis ใน Slack → Socket Mode รับ event แบบ real-time
- เอเจนต์ตอบกลับ "Message received! Working on it now..." ใน thread ใต้ข้อความของคุณ
- เอเจนต์วิจัย (15-60 วินาที) → คำตอบปรากฏใน thread เดียวกัน
- หากประมวลผลนานกว่า 60 วินาที: "Still working! Will reply ASAP" ใน thread
- คำตอบทั้งหมดใช้การจัดรูปแบบของ Slack (ตัวหนา, ตัวเอียง,
code, รายการ)
หมายเหตุสำคัญ¶
- ติดตั้งใหม่หลังการเปลี่ยนแปลง: ทุกครั้งที่คุณเพิ่ม scope หรือ event ต้องติดตั้งแอปใหม่
- App Token เทียบกับ Bot Token: Bot Token (
xoxb-) สำหรับเรียก API, App Token (xapp-) สำหรับ Socket Mode ต้องมีทั้งสองอย่าง - อย่าใช้ UI ของ Event Subscriptions สำหรับ Request URL: เมื่อใช้ Socket Mode คุณไม่จำเป็นต้องมี Request URL ใช้วิธี App Manifest ด้านบนแทน
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Sending messages to this app has been turned off" | App Home → เปิด Messages Tab → "Allow users to send messages" |
| Bot ไม่ตอบกลับ | ตรวจสอบว่า Socket Mode เปิดอยู่ + subscribe event message.im แล้ว + ติดตั้งแอปใหม่แล้ว |
| Error "missing_scope" | เพิ่ม scope → ติดตั้งแอปใหม่ |
| ไม่เห็น Bot ใน Slack | คลิก "+" ข้าง Direct Messages → ค้นหา "OpenJarvis" |
| Event Subscriptions บันทึกไม่ได้ | ใช้วิธี App Manifest (หลีกเลี่ยงข้อกำหนด Request URL) |
Data Connectors¶
Gmail¶
สิ่งที่ index: ข้อความอีเมลและ thread จากกล่องข้อความ Gmail ของคุณ
การตั้งค่า (App Password — แนะนำ)¶
-
เปิดใช้งาน 2-Factor Authentication บนบัญชี Google ของคุณ: เปิดการตั้งค่าความปลอดภัยของ Google →
-
สร้าง App Password สำหรับ "Mail": เปิด App Passwords →
- เลือก "Mail" เป็นแอป
-
คัดลอก password 16 ตัวอักษร (เช่น
qpde kebj evhy zljc) -
เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → your agent → แท็บ Channels → Gmail → Reconnect
- CLI:
uv run jarvis connect gmail_imap - ป้อนที่อยู่อีเมลและ app password ของคุณ
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| ไม่มีหน้า "App Passwords" | เปิดใช้งาน 2-Factor Authentication ก่อน |
| Login ล้มเหลว | ตรวจสอบว่าใช้ app password ไม่ใช่ password ปกติของ Google |
| ไม่มีอีเมล sync | ตรวจสอบว่าเปิด IMAP แล้ว: Gmail Settings → Forwarding and POP/IMAP |
| ได้แค่อีเมลล่าสุด | ค่าเริ่มต้น sync แค่ 500 อีเมลล่าสุด เพิ่มด้วยการตั้งค่า max_messages |
Google Drive¶
สิ่งที่ index: เอกสาร, Sheets, PDF และไฟล์อื่นๆ จาก Drive ของคุณ
การตั้งค่า¶
-
ไปที่ Google Cloud Console และสร้างโปรเจกต์ (หรือใช้โปรเจกต์ที่มีอยู่): สร้างโปรเจกต์ →
-
เปิดใช้งาน Google Drive API: เปิดใช้งาน Drive API →
-
สร้าง OAuth credential: เปิด Credentials →
- คลิก "Create Credentials" → "OAuth 2.0 Client ID"
- เลือก "Desktop app" เป็นประเภทแอปพลิเคชัน
-
คัดลอก Client ID และ Client Secret
-
เพิ่มตัวเองเป็น test user (จำเป็นในขณะที่แอปยังไม่ผ่านการยืนยัน): เปิด OAuth Consent Screen →
- เลื่อนไปที่ "Test users" → คลิก "+ Add Users"
-
เพิ่มที่อยู่ Gmail ของคุณ (เช่น
jonsaadfalcon@gmail.com) -
เพิ่ม redirect URI: เปิด Credentials →
- คลิก OAuth Client ของคุณ → Authorized redirect URIs
-
เพิ่ม:
http://localhost:8789/callback -
เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Google Drive → วาง Client ID และ Client Secret
- เบราว์เซอร์ของคุณจะเปิดหน้ายินยอมของ Google → อนุญาตการเข้าถึงแบบอ่านอย่างเดียว
- คุณจะเห็น "Authorization successful!" → ข้อมูล Drive จะเริ่ม sync
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Access blocked: app has not completed verification" | เพิ่มอีเมลของคุณเป็น test user (ขั้นตอนที่ 4 ด้านบน) |
| "Error 400: redirect_uri_mismatch" | เพิ่ม http://localhost:8789/callback เป็น authorized redirect URI (ขั้นตอนที่ 5) |
| "Error 403: access_denied" | ตรวจสอบว่าเลือก "Desktop app" ตอนสร้าง OAuth client |
| เชื่อมต่อแล้วแต่ 0 ไฟล์ | ตรวจสอบว่าให้สิทธิ์อ่าน Drive ในหน้ายินยอมแล้ว ลองเชื่อมต่อใหม่ |
| Token หมดอายุ | Access token หมดอายุหลัง 1 ชั่วโมง เชื่อมต่อใหม่เพื่อรับ token ใหม่ (การรีเฟรชอัตโนมัติกำลังจะมา) |
Google Calendar¶
สิ่งที่ index: กิจกรรม, การประชุม และรายการในปฏิทิน
การตั้งค่า¶
เหมือนกับ Google Drive — ใช้ Google Cloud project และ OAuth client เดียวกัน
-
เปิดใช้งาน Google Calendar API: เปิดใช้งาน Calendar API →
-
ทำตามขั้นตอนที่ 3-6 จากหมวด Google Drive ด้านบน (Client ID/Secret เดียวกันใช้ได้เลย)
การแก้ปัญหา¶
เหมือนกับ Google Drive และเพิ่มเติม:
| ปัญหา | วิธีแก้ |
|---|---|
| เห็นแค่ปฏิทินหลัก | Connector จะอ่านทุกปฏิทินที่คุณมีสิทธิ์เข้าถึง |
| ปฏิทินที่แชร์หายไป | ปฏิทินที่แชร์จากผู้ใช้อื่นอาจต้องการสิทธิ์เพิ่มเติม |
Google Contacts¶
สิ่งที่ index: รายชื่อ, หมายเลขโทรศัพท์, อีเมล และข้อมูลผู้ติดต่อ
การตั้งค่า¶
เหมือนกับ Google Drive — ใช้ Google Cloud project และ OAuth client เดียวกัน
-
เปิดใช้งาน People API: เปิดใช้งาน People API →
-
ทำตามขั้นตอนที่ 3-6 จากหมวด Google Drive ด้านบน
Slack¶
Slack มีบทบาทสองอย่างใน OpenJarvis:
- แหล่งข้อมูล — index ข้อความ channel, DM และ thread เพื่อให้เอเจนต์ค้นหาได้
- Messaging Channel — ให้คุณ DM เอเจนต์โดยตรงใน Slack
เราแนะนำให้สร้าง Slack app เดียว ที่จัดการทั้งสองอย่าง App Manifest ด้านล่างมี scope ที่จำเป็นทั้งหมด
การตั้งค่าอย่างรวดเร็ว (App Manifest — แนะนำ)¶
-
ไปที่ Slack App Settings →
-
Create New App → "From an app manifest" → เลือก workspace ของคุณ
-
วาง JSON manifest นี้ (มี scope ทั้งหมดสำหรับแหล่งข้อมูล + messaging):
{
"display_information": { "name": "OpenJarvis" },
"features": {
"app_home": {
"home_tab_enabled": true,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"bot_user": { "display_name": "OpenJarvis", "always_online": true }
},
"oauth_config": {
"scopes": {
"bot": [
"channels:read", "channels:history", "channels:join",
"groups:read", "groups:history",
"im:read", "im:write", "im:history",
"mpim:read", "mpim:history",
"chat:write",
"users:read",
"app_mentions:read"
]
}
},
"settings": {
"event_subscriptions": { "bot_events": ["message.im"] },
"socket_mode_enabled": true
}
}
-
ตรวจสอบแล้วคลิก Create
-
ติดตั้งแอป: Install App → Install to Workspace → Authorize
-
คัดลอก Bot Token: ไปที่ OAuth & Permissions → คัดลอก Bot User OAuth Token (
xoxb-...) -
สร้าง App-Level Token (สำหรับ DM):
- ไปที่ Basic Information → App-Level Tokens → Generate Token
- ตั้งชื่อว่า "socket" → เพิ่ม scope
connections:write→ Generate -
คัดลอก token (
xapp-...) -
(ทางเลือกเสริม) ตั้งไอคอนแอป:
- ไปที่ Basic Information → Display Information
- อัปโหลด ไอคอนของ OpenJarvis
Scope ของ Bot Token ที่จำเป็น (อ้างอิง)¶
| Scope | จุดประสงค์ |
|---|---|
channels:read |
แสดงรายการ channel สาธารณะ |
channels:history |
อ่านข้อความ channel สาธารณะ |
channels:join |
เข้าร่วม channel สาธารณะอัตโนมัติเพื่อ index |
groups:read |
แสดงรายการ channel ส่วนตัว |
groups:history |
อ่านข้อความ channel ส่วนตัว |
im:read |
แสดงรายการบทสนทนา DM |
im:write |
เปิดบทสนทนา DM |
im:history |
อ่านประวัติ DM + รับ event DM |
mpim:read |
แสดงรายการ DM แบบกลุ่ม |
mpim:history |
อ่านข้อความ DM แบบกลุ่ม |
chat:write |
ส่งข้อความและคำตอบ |
users:read |
ดูข้อมูลผู้ใช้ |
app_mentions:read |
เห็น @mention ของ bot |
Scope ของ App-Level Token: connections:write (จำเป็นสำหรับ Socket Mode / DM)
เชื่อมต่อใน OpenJarvis¶
เป็นแหล่งข้อมูล (อ่านข้อความ channel):
- Desktop/Browser: Data Sources → Slack → วาง bot token (xoxb-...)
- CLI: uv run jarvis connect slack
เป็น Messaging Channel (DM เอเจนต์ของคุณ):
- Desktop/Browser: Data Sources → Messaging Channels → Slack → Set Up
- ป้อนทั้ง Bot Token (xoxb-...) และ App Token (xapp-...)
- หรือ: Agents → เลือกเอเจนต์ → Messaging Channels → Slack → Set Up
DM เอเจนต์ของคุณ: - ใน Slack ค้นหา OpenJarvis ใต้ Apps (หรือ Direct Messages) - หากไม่เห็น: คลิก "+" ข้าง Direct Messages → ค้นหา "OpenJarvis" - ส่งข้อความ → เอเจนต์ตอบกลับใน thread
หมายเหตุสำคัญ¶
- ติดตั้งใหม่หลังเปลี่ยน Scope: ทุกครั้งที่คุณเพิ่ม scope ใหม่หรือเปลี่ยน event subscription คุณ**ต้อง**ติดตั้งแอปใหม่
- App-Level Token เทียบกับ Bot Token: Bot Token (
xoxb-) สำหรับเรียก API App Token (xapp-) สำหรับ Socket Mode ต้องมีทั้งสองอย่างให้ DM ทำงานได้ - การมองเห็น Channel: Bot อ่านได้เฉพาะ channel ที่ถูกเพิ่มเข้าไปเท่านั้น เชิญมันด้วย
/invite @OpenJarvisในแต่ละ channel ที่ต้องการให้ index - การตอบใน Thread: หากคุณตอบใน thread bot จะเห็น ข้อความระดับบนสุดใหม่ก็ทำงานได้เช่นกัน
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "not_allowed_token_type" | ใช้ Bot token (xoxb-...) ไม่ใช่ user token (xoxp-) หรือ session token (xoxe-) |
| "Sending messages to this app has been turned off" | ไปที่ App Home → เปิด "Messages Tab" → เช็ค "Allow users to send messages from the messages tab" |
| Bot ไม่ตอบ DM | ตรวจสอบว่า Socket Mode เปิดอยู่, subscribe event message.im แล้ว และติดตั้งแอปใหม่หลังเปลี่ยนแปลง |
| Error "missing_scope" | เพิ่ม scope ที่ขาดใน OAuth & Permissions → ติดตั้งแอปใหม่ |
| ไม่เห็น Bot ใน Slack | ไปที่ Install App → Reinstall to Workspace |
| ไม่พบข้อความ (แหล่งข้อมูล) | Bot เห็นได้เฉพาะ channel ที่ถูกเพิ่มเข้าไปเท่านั้น เชิญมัน: /invite @OpenJarvis ใน channel |
| Socket Mode เชื่อมต่อแต่ไม่มี event เข้ามา | ตรวจสอบว่า message.im อยู่ใน bot_events ของ manifest แล้ว ติดตั้งแอปใหม่ |
Notion¶
สิ่งที่ index: หน้าเพจ, ฐานข้อมูล และเนื้อหาของมัน
การตั้งค่า¶
- สร้าง internal integration: เปิด Notion Integrations →
- คลิก "New integration"
- ตั้งชื่อ (เช่น "OpenJarvis")
- เลือก workspace ของคุณ
-
คัดลอก Internal Integration Secret (ขึ้นต้นด้วย
ntn_) -
แชร์หน้าเพจกับ integration ของคุณ:
- เปิดหน้า Notion ใดก็ได้ที่ต้องการ index
- คลิก "..." (มุมบนขวา) → "Connections" → ค้นหา integration ของคุณ → คลิก
-
ทำซ้ำสำหรับแต่ละหน้าเพจหรือฐานข้อมูล
-
เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Notion → วาง token
- CLI:
uv run jarvis connect notion
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| พบ 0 หน้าเพจ | คุณต้องแชร์หน้าเพจกับ integration อย่างชัดเจน (ขั้นตอนที่ 2) integration เห็นได้เฉพาะหน้าเพจที่คุณเชื่อมต่อแล้ว |
| เนื้อหาฐานข้อมูลหายไป | แชร์หน้าฐานข้อมูลเอง ไม่ใช่แค่ entry แต่ละรายการ |
| Token หมดอายุ | Token ของ Notion integration ไม่หมดอายุ หากใช้ไม่ได้ ให้สร้างใหม่ที่หน้า integrations |
Granola¶
สิ่งที่ index: โน้ตการประชุมและบทถอดเสียงจาก AI ของแอป Granola
การตั้งค่า¶
- เปิดแอปเดสก์ท็อป Granola → Settings → API
- คัดลอก API key ของคุณ (ขึ้นต้นด้วย
grn_) - เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Granola → วาง key
- CLI:
uv run jarvis connect granola
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| ไม่มี API key ในการตั้งค่า | Granola API มีให้เฉพาะแพลน Business และ Enterprise |
| พบ 0 โน้ตการประชุม | ตรวจสอบว่าคุณมีการประชุมที่บันทึกไว้ใน Granola |
Apple Notes¶
สิ่งที่ index: โน้ตจากแอป Notes บน macOS
การตั้งค่า (อัตโนมัติ)¶
- ให้สิทธิ์ Full Disk Access กับแอปเทอร์มินัลของคุณ:
- เปิด System Settings → Privacy & Security → Full Disk Access
-
เปิดสิทธิ์ให้ Terminal, iTerm, Warp หรือแอปเดสก์ท็อปของ OpenJarvis
-
Apple Notes จะถูกตรวจจับโดยอัตโนมัติเมื่อให้สิทธิ์ Full Disk Access แล้ว
OpenJarvis ค้นหาจาก snapshot ที่ index ไว้ แทนที่จะ query Notes.app แบบ live หลังจากสร้างโน้ตใหม่ เปิด Data Sources และคลิก Re-sync บน Apple Notes ก่อนค้นหาเนื้อหาใหม่
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Not connected" ทั้งที่ให้สิทธิ์ Full Disk Access แล้ว | Restart แอปเทอร์มินัลของคุณหลังให้สิทธิ์ |
| เนื้อหาโน้ตอ่านไม่ออก | โน้ตเก่ามากๆ บางตัวอาจมีปัญหา encoding โน้ตส่วนใหญ่ควรอ่านได้ปกติ |
| โน้ตใหม่หายไป | ใน Data Sources คลิก Re-sync บน Apple Notes เพื่อรีเฟรชดัชนี |
| โน้ตบางส่วนหายไป | เฉพาะโน้ตที่เก็บในเครื่องหรือ iCloud เท่านั้นที่ถูก index โน้ตในบัญชีอื่น (Gmail, Exchange) อาจไม่ปรากฏ |
iMessage¶
สิ่งที่ index: ข้อความจากแอป Messages บน macOS
การตั้งค่า (อัตโนมัติ)¶
เหมือนกับ Apple Notes — ต้องมี Full Disk Access
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Not connected" | ให้สิทธิ์ Full Disk Access (ดู Apple Notes ด้านบน) |
| Sync ช้ามาก | ฐานข้อมูล iMessage อาจใหญ่มาก (50K+ ข้อความ) การ sync ครั้งแรกอาจใช้เวลา 10-30 วินาที |
| ข้อความล่าสุดหายไป | ข้อความ sync จากฐานข้อมูลในเครื่อง หาก Messages.app ยัง sync จาก iCloud ไม่เสร็จ ข้อความล่าสุดอาจหายไป |
Outlook / Microsoft 365¶
สิ่งที่ index: ข้อความอีเมลผ่าน IMAP
การตั้งค่า¶
-
เปิดใช้งาน 2-Factor Authentication บนบัญชี Microsoft ของคุณ: เปิด Microsoft Security →
-
สร้าง App Password:
- ไปที่ Security → Advanced security options → App passwords
-
สร้าง app password ใหม่
-
เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Outlook → ป้อนอีเมล + app password
- CLI:
uv run jarvis connect outlook
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| Login ล้มเหลว | ใช้ app password ไม่ใช่ password ปกติของ Microsoft |
| "Authentication failed" | องค์กร Microsoft 365 บางแห่งปิด IMAP ตรวจสอบกับ IT admin ของคุณ |
| ได้แค่ Inbox | ปัจจุบัน sync เฉพาะโฟลเดอร์ Inbox เท่านั้น |
Obsidian¶
สิ่งที่ index: ไฟล์ Markdown จาก vault ของ Obsidian
การตั้งค่า¶
- หาโฟลเดอร์ vault ของ Obsidian (โฟลเดอร์ที่มีไดเรกทอรี
.obsidian) - เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Obsidian → วาง path ของ vault
- CLI:
uv run jarvis connect obsidian --path /path/to/vault
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Not connected" | ตรวจสอบให้แน่ใจว่า path มีอยู่จริงและมีโฟลเดอร์ .obsidian |
| ไฟล์หายไป | index เฉพาะไฟล์ .md, .markdown และ .txt เท่านั้น ไฟล์ binary และรูปภาพจะถูกข้าม |
| Sync ช้าสำหรับ vault ขนาดใหญ่ | Vault ที่มีไฟล์ 1000+ ไฟล์ อาจใช้เวลาประมาณหนึ่งนาทีในการ sync |
Dropbox¶
สิ่งที่ index: ไฟล์และเอกสารจาก Dropbox ของคุณ
การตั้งค่า¶
- สร้างแอป Dropbox: เปิด Dropbox App Console →
-
เลือก "Scoped access" → "Full Dropbox"
-
ตั้งค่าสิทธิ์:
-
ที่แท็บ Permissions เปิดใช้งาน
files.metadata.readและfiles.content.read -
สร้าง access token:
-
ไปที่แท็บ Settings → "Generated access token" → Generate
-
เชื่อมต่อใน OpenJarvis:
- Desktop/Browser: Agents → แท็บ Channels → Dropbox → วาง token
- CLI:
uv run jarvis connect dropbox
การแก้ปัญหา¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Invalid access token" | Token ระยะสั้นของ Dropbox หมดอายุหลัง 4 ชั่วโมง สร้างใหม่ |
| ไฟล์หายไป | ตรวจสอบว่าเปิดสิทธิ์ที่ถูกต้องแล้ว (ขั้นตอนที่ 2) |
การแก้ปัญหาทั่วไป¶
Connector ทั้งหมด¶
| ปัญหา | วิธีแก้ |
|---|---|
| "Connected — no data synced yet" | Connector ยืนยันตัวตนแล้วแต่ยัง sync ไม่เสร็จ ลองรัน uv run jarvis deep-research-setup --skip-chat เพื่อ trigger การ sync |
| ข้อมูลดูเก่า | Connector sync ตามคำขอ รันคำสั่ง setup หรือคลิก "Reconnect" เพื่อ sync ใหม่ |
| ต้องการรีเซ็ต connector | คลิก "Reconnect" ในแท็บ Channels หรือลบไฟล์ credential ที่ ~/.openjarvis/connectors/{connector}.json |
Credential ถูกเก็บไว้ที่ไหน¶
Credential ทั้งหมดถูกบันทึกในเครื่องที่ ~/.openjarvis/connectors/ พร้อม
สิทธิ์ไฟล์ 0600 (เจ้าของอ่าน/เขียนได้เท่านั้น) ไม่มี credential ใดถูกส่งไป
ยังเซิร์ฟเวอร์ใดเลย — ทุกอย่างอยู่ในอุปกรณ์ของคุณ
~/.openjarvis/connectors/
├── gmail_imap.json # Gmail email + app password
├── gdrive.json # Google Drive OAuth tokens
├── gcalendar.json # Google Calendar OAuth tokens
├── gcontacts.json # Google Contacts OAuth tokens
├── slack.json # Slack bot token
├── notion.json # Notion integration token
├── granola.json # Granola API key
├── outlook.json # Outlook email + app password
└── dropbox.json # Dropbox access token