Поскольку нам нужно использовать делегированное разрешение для отправки сообщения командам MS , поэтому мы должны сначала пройти аутентификацию пользователя, чтобы использовать GraphAPI для отправки сообщения в канал команды. Я пытаюсь добиться этого программно, ниже приведен фрагмент кода
Код: Выделить всё
from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient
from msgraph.generated.models.chat_message import ChatMessage
from msgraph.generated.models.item_body import ItemBody
#from azure.identity import DeviceCodeCredential
import os
import asyncio
client_id = os.environ["clientid"]
client_secret = os.environ["clientsecret"]
tenant_id = os.environ["tenenatid"]
credential = ClientSecretCredential(
tenant_id=tenant_id,
client_id=client_id,
client_secret=client_secret,
)
async def send_message():
scopes = ['https://graph.microsoft.com/.default']
client = GraphServiceClient(credentials=credential, scopes=scopes)
print(client)
request_body = ChatMessage(
body = ItemBody(
content = "Hello World",
),
)
channel_id = os.environ["channel_id"]
team_id = os.environ["team_id"]
result = await client.teams.by_team_id(team_id).channels.by_channel_id(channel_id).messages.post(request_body)
if result:
print(result)
if __name__ == "__main__":
asyncio.run(send_message())
Код: Выделить всё
msgraph.generated.models.o_data_errors.o_data_error.ODataError:
APIError
Code: 401
message: None
error: MainError(additional_data={}, code='Unauthorized', details=None, inner_error=InnerError(additional_data={}, client_request_id='xxxxxx-412e-4493-xxxx-ccd3667dxxxx', date=DateTime(2024, 9, 20, 10, 58, 16, tzinfo=Timezone('UTC')), odata_type=None, request_id='xxxxxx-da73-4457-xxxx-ee9ea940xxxx'), message='Message POST is allowed in application-only context only for import purposes. Refer to https://docs.microsoft.com/microsoftteams/platform/graph-api/import-messages/import-external-messages-to-teams for more details.', target=None)
Мне нужна ваша помощь, как я могу отправить сообщение в канал команды программным способом без входа в браузер.
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-graphapi