import asyncio
import os
import sys
from fast_bitrix24 import Bitrix
# Добавляем текущую директорию в путь, чтобы импорты работали
sys.path.append(os.getcwd())
from src.config import SettingsManager
async def test_send():
print("----------------------------------------------------------------")
print("🛠 DIAGNOSTIC: BITRIX24 IM PERMISSIONS")
print("----------------------------------------------------------------")
# 1. Загружаем настройки
try:
settings = SettingsManager.init()
print(f"✅ Settings loaded.")
print(f"🔗 Webhook: {settings.BITRIX_WEBHOOK_URL}")
except Exception as e:
print(f"❌ Failed to load settings: {e}")
return
# 2. Пытаемся извлечь ID пользователя из вебхука (обычно .../rest/USER_ID/KEY/)
user_id = "1" # Default fallback
try:
parts = settings.BITRIX_WEBHOOK_URL.split("/rest/")
if len(parts) > 1:
user_id = parts[1].split("/")[0]
print(f"🆔 Extracted User ID from Webhook: {user_id}")
except:
print("⚠️ Could not extract User ID, using default '1'")
# 3. Инициализируем клиент
bx = Bitrix(settings.BITRIX_WEBHOOK_URL)
# 4. Пробуем отправить сообщение САМОМУ СЕБЕ (или владельцу вебхука)
print(f"📨 Attempting to send message to User {user_id}...")
try:
result = await bx.call(
"im.message.add",
{
"DIALOG_ID": user_id,
"MESSAGE": "🔔 TEST MESSAGE FROM SERVER DIAGNOSTIC",
"SYSTEM": "N",
}
)
print(f"✅ SUCCESS! Message ID: {result}")
print("💡 Output: The webhook works and has 'im' (Chat) permissions.")
except Exception as e:
print(f"❌ FAILED to send message.")
print(f"Error details: {e}")
print("----------------------------------------------------------------")
print("🚑 DIAGNOSIS:")
print("1. Check your Webhook permissions.")
print(" It MUST have 'Chat and Notifications' (im) scope selected.")
print("2. Check if the user ID exists.")
if __name__ == "__main__":
asyncio.run(test_send())