ข้ามไปที่เนื้อหา

Channels & Connectors

OpenJarvis มีการเชื่อมต่อ 2 ประเภท:

  • Data Connectors — การเข้าถึงข้อมูลส่วนตัวของคุณแบบอ่านอย่างเดียว (Gmail, iMessage, Google Drive ฯลฯ) เพื่อให้เอเจนต์ค้นหาและวิจัยข้ามข้อมูลเหล่านั้นได้
  • Messaging Channels — วิธีคุยกับเอเจนต์ของคุณจากโทรศัพท์หรือแพลตฟอร์มอื่น (iMessage/SMS, Slack)

Messaging Channels

iMessage & SMS (ผ่าน SendBlue)

สิ่งที่มันทำ: ให้เอเจนต์ของคุณมีหมายเลขโทรศัพท์ ส่งข้อความจากโทรศัพท์ เครื่องใดก็ได้ (iPhone ผ่าน iMessage, Android ผ่าน SMS) แล้วเอเจนต์จะตอบกลับ

การตั้งค่า

  1. สร้างบัญชี SendBlue: sendblue.com — มี free tier ให้ใช้
  2. รับ API credential ของคุณ: Dashboard → API Keys → คัดลอก API Key ID และ API Secret Key
  3. จดหมายเลขโทรศัพท์ SendBlue ของคุณไว้ — นี่คือหมายเลขที่คนอื่นส่งข้อความมาเพื่อเข้าถึงเอเจนต์ของคุณ
  4. เชื่อมต่อใน OpenJarvis:
  5. Desktop/Browser: Agents → your agent → แท็บ Messaging → iMessage/SMS → ป้อน API Key ID, API Secret Key และหมายเลขโทรศัพท์
  6. เอเจนต์จะส่งข้อความ "ack" และทดสอบเพื่อยืนยันว่าทำงานได้
  7. ตั้งค่า webhook เพื่อให้ข้อความขาเข้าถึงเอเจนต์ของคุณ:
  8. คุณต้องมี URL สาธารณะ — ใช้ ngrok เพื่อทำ tunnel ไปยังเซิร์ฟเวอร์ในเครื่องของคุณ: ngrok http 9001
  9. ลงทะเบียน webhook URL กับ SendBlue:
    curl -X PUT https://api.sendblue.co/api/account/webhooks \
      -H "sb-api-key-id: YOUR_KEY" \
      -H "sb-api-secret-key: YOUR_SECRET" \
      -H "Content-Type: application/json" \
      -d '{"webhooks": {"receive": ["https://YOUR-NGROK-URL.ngrok-free.dev/webhooks/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 นี้เพื่อตั้งค่าทุกอย่างในครั้งเดียว

  1. ไปที่ api.slack.com/apps → Create New App → From an app manifest
  2. เลือก 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
    }
}
  1. คลิก Create → Install to Workspace → Allow
  2. คัดลอก Bot User OAuth Token (xoxb-...) จาก OAuth & Permissions
  3. ไปที่ Basic Information → App-Level Tokens → Generate Token → เพิ่ม scope connections:write → คัดลอก token (xapp-...)
  4. เชื่อมต่อใน OpenJarvis:
  5. Desktop/Browser: Agents → your agent → แท็บ Messaging → Slack → วาง token ทั้งสอง
  6. 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 — แนะนำ)

  1. เปิดใช้งาน 2-Factor Authentication บนบัญชี Google ของคุณ: เปิดการตั้งค่าความปลอดภัยของ Google →

  2. สร้าง App Password สำหรับ "Mail": เปิด App Passwords →

  3. เลือก "Mail" เป็นแอป
  4. คัดลอก password 16 ตัวอักษร (เช่น qpde kebj evhy zljc)

  5. เชื่อมต่อใน OpenJarvis:

  6. Desktop/Browser: Agents → your agent → แท็บ Channels → Gmail → Reconnect
  7. CLI: uv run jarvis connect gmail_imap
  8. ป้อนที่อยู่อีเมลและ 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 ของคุณ

การตั้งค่า

  1. ไปที่ Google Cloud Console และสร้างโปรเจกต์ (หรือใช้โปรเจกต์ที่มีอยู่): สร้างโปรเจกต์ →

  2. เปิดใช้งาน Google Drive API: เปิดใช้งาน Drive API →

  3. สร้าง OAuth credential: เปิด Credentials →

  4. คลิก "Create Credentials" → "OAuth 2.0 Client ID"
  5. เลือก "Desktop app" เป็นประเภทแอปพลิเคชัน
  6. คัดลอก Client ID และ Client Secret

  7. เพิ่มตัวเองเป็น test user (จำเป็นในขณะที่แอปยังไม่ผ่านการยืนยัน): เปิด OAuth Consent Screen →

  8. เลื่อนไปที่ "Test users" → คลิก "+ Add Users"
  9. เพิ่มที่อยู่ Gmail ของคุณ (เช่น jonsaadfalcon@gmail.com)

  10. เพิ่ม redirect URI: เปิด Credentials →

  11. คลิก OAuth Client ของคุณ → Authorized redirect URIs
  12. เพิ่ม: http://localhost:8789/callback

  13. เชื่อมต่อใน OpenJarvis:

  14. Desktop/Browser: Agents → แท็บ Channels → Google Drive → วาง Client ID และ Client Secret
  15. เบราว์เซอร์ของคุณจะเปิดหน้ายินยอมของ Google → อนุญาตการเข้าถึงแบบอ่านอย่างเดียว
  16. คุณจะเห็น "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 เดียวกัน

  1. เปิดใช้งาน Google Calendar API: เปิดใช้งาน Calendar API →

  2. ทำตามขั้นตอนที่ 3-6 จากหมวด Google Drive ด้านบน (Client ID/Secret เดียวกันใช้ได้เลย)

การแก้ปัญหา

เหมือนกับ Google Drive และเพิ่มเติม:

ปัญหา วิธีแก้
เห็นแค่ปฏิทินหลัก Connector จะอ่านทุกปฏิทินที่คุณมีสิทธิ์เข้าถึง
ปฏิทินที่แชร์หายไป ปฏิทินที่แชร์จากผู้ใช้อื่นอาจต้องการสิทธิ์เพิ่มเติม

Google Contacts

สิ่งที่ index: รายชื่อ, หมายเลขโทรศัพท์, อีเมล และข้อมูลผู้ติดต่อ

การตั้งค่า

เหมือนกับ Google Drive — ใช้ Google Cloud project และ OAuth client เดียวกัน

  1. เปิดใช้งาน People API: เปิดใช้งาน People API →

  2. ทำตามขั้นตอนที่ 3-6 จากหมวด Google Drive ด้านบน


Slack

Slack มีบทบาทสองอย่างใน OpenJarvis:

  • แหล่งข้อมูล — index ข้อความ channel, DM และ thread เพื่อให้เอเจนต์ค้นหาได้
  • Messaging Channel — ให้คุณ DM เอเจนต์โดยตรงใน Slack

เราแนะนำให้สร้าง Slack app เดียว ที่จัดการทั้งสองอย่าง App Manifest ด้านล่างมี scope ที่จำเป็นทั้งหมด

การตั้งค่าอย่างรวดเร็ว (App Manifest — แนะนำ)

  1. ไปที่ Slack App Settings →

  2. Create New App → "From an app manifest" → เลือก workspace ของคุณ

  3. วาง 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
    }
}
  1. ตรวจสอบแล้วคลิก Create

  2. ติดตั้งแอป: Install App → Install to Workspace → Authorize

  3. คัดลอก Bot Token: ไปที่ OAuth & Permissions → คัดลอก Bot User OAuth Token (xoxb-...)

  4. สร้าง App-Level Token (สำหรับ DM):

  5. ไปที่ Basic Information → App-Level Tokens → Generate Token
  6. ตั้งชื่อว่า "socket" → เพิ่ม scope connections:write → Generate
  7. คัดลอก token (xapp-...)

  8. (ทางเลือกเสริม) ตั้งไอคอนแอป:

  9. ไปที่ Basic Information → Display Information
  10. อัปโหลด ไอคอนของ 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: หน้าเพจ, ฐานข้อมูล และเนื้อหาของมัน

การตั้งค่า

  1. สร้าง internal integration: เปิด Notion Integrations →
  2. คลิก "New integration"
  3. ตั้งชื่อ (เช่น "OpenJarvis")
  4. เลือก workspace ของคุณ
  5. คัดลอก Internal Integration Secret (ขึ้นต้นด้วย ntn_)

  6. แชร์หน้าเพจกับ integration ของคุณ:

  7. เปิดหน้า Notion ใดก็ได้ที่ต้องการ index
  8. คลิก "..." (มุมบนขวา) → "Connections" → ค้นหา integration ของคุณ → คลิก
  9. ทำซ้ำสำหรับแต่ละหน้าเพจหรือฐานข้อมูล

  10. เชื่อมต่อใน OpenJarvis:

  11. Desktop/Browser: Agents → แท็บ Channels → Notion → วาง token
  12. CLI: uv run jarvis connect notion

การแก้ปัญหา

ปัญหา วิธีแก้
พบ 0 หน้าเพจ คุณต้องแชร์หน้าเพจกับ integration อย่างชัดเจน (ขั้นตอนที่ 2) integration เห็นได้เฉพาะหน้าเพจที่คุณเชื่อมต่อแล้ว
เนื้อหาฐานข้อมูลหายไป แชร์หน้าฐานข้อมูลเอง ไม่ใช่แค่ entry แต่ละรายการ
Token หมดอายุ Token ของ Notion integration ไม่หมดอายุ หากใช้ไม่ได้ ให้สร้างใหม่ที่หน้า integrations

Granola

สิ่งที่ index: โน้ตการประชุมและบทถอดเสียงจาก AI ของแอป Granola

การตั้งค่า

  1. เปิดแอปเดสก์ท็อป Granola → Settings → API
  2. คัดลอก API key ของคุณ (ขึ้นต้นด้วย grn_)
  3. เชื่อมต่อใน OpenJarvis:
  4. Desktop/Browser: Agents → แท็บ Channels → Granola → วาง key
  5. CLI: uv run jarvis connect granola

การแก้ปัญหา

ปัญหา วิธีแก้
ไม่มี API key ในการตั้งค่า Granola API มีให้เฉพาะแพลน Business และ Enterprise
พบ 0 โน้ตการประชุม ตรวจสอบว่าคุณมีการประชุมที่บันทึกไว้ใน Granola

Apple Notes

สิ่งที่ index: โน้ตจากแอป Notes บน macOS

การตั้งค่า (อัตโนมัติ)

  1. ให้สิทธิ์ Full Disk Access กับแอปเทอร์มินัลของคุณ:
  2. เปิด System Settings → Privacy & Security → Full Disk Access
  3. เปิดสิทธิ์ให้ Terminal, iTerm, Warp หรือแอปเดสก์ท็อปของ OpenJarvis

  4. 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

การตั้งค่า

  1. เปิดใช้งาน 2-Factor Authentication บนบัญชี Microsoft ของคุณ: เปิด Microsoft Security →

  2. สร้าง App Password:

  3. ไปที่ Security → Advanced security options → App passwords
  4. สร้าง app password ใหม่

  5. เชื่อมต่อใน OpenJarvis:

  6. Desktop/Browser: Agents → แท็บ Channels → Outlook → ป้อนอีเมล + app password
  7. 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

การตั้งค่า

  1. หาโฟลเดอร์ vault ของ Obsidian (โฟลเดอร์ที่มีไดเรกทอรี .obsidian)
  2. เชื่อมต่อใน OpenJarvis:
  3. Desktop/Browser: Agents → แท็บ Channels → Obsidian → วาง path ของ vault
  4. 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 ของคุณ

การตั้งค่า

  1. สร้างแอป Dropbox: เปิด Dropbox App Console →
  2. เลือก "Scoped access" → "Full Dropbox"

  3. ตั้งค่าสิทธิ์:

  4. ที่แท็บ Permissions เปิดใช้งาน files.metadata.read และ files.content.read

  5. สร้าง access token:

  6. ไปที่แท็บ Settings → "Generated access token" → Generate

  7. เชื่อมต่อใน OpenJarvis:

  8. Desktop/Browser: Agents → แท็บ Channels → Dropbox → วาง token
  9. 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