Untitled

 avatar
unknown
plain_text
a month ago
2.1 kB
5
Indexable
@tool
def meeting_invite_tool(user_query, state: Annotated[dict, InjectedState], config: RunnableConfig) -> str:
    """
    Tool that creates a meeting link if requested by the user
    Args:
        user_query: The user query request for creating a meeting with 1 or more participants.
    """
    llm=model_categories["l"]
    user_to_email = config["configurable"]["user_to_email"]
    output = [SystemMessage(content=f"""                             
                            """
                            )]
    response = llm.invoke(output)
    if response.get("data_issues",True):
        return response["data_issues"]
    access_token=config["configurable"]["access_token"]
    meeting_start = response.get("meeting_start", datetime.now(pytz.utc)).isoformat()
    meeting_end = response.get("meeting_end", meeting_start + timedelta(hours=1)).isoformat()
    attendees=response["attendees"]
    meeting_subject_email=response.get("email_subject",f"Meeting link: {meeting_start}-{meeting_end}")
    meeting_body_email=response.get("email_body",f"Meeting link: {meeting_start}-{meeting_end}")

    #API calls
    outlook_details_of_user_url = f"{storage_api_url}/outlook/list-connected-outlook-accounts"
    outlook_details_of_user_data = requests.request("GET", outlook_details_of_user_url, headers={'Authorization': f"{access_token}"})
    user_account_details = outlook_details_of_user_data.get("accounts", [])
    user_outlook_account_id= user_account_details ("outlook_account_id","") if user_account_details else ""
    meeting_details_url= f"{storage_api_url}/outlook/meeting-invite"
    meeting_details_payload={
    "account_id": user_outlook_account_id,
    "reply_content": meeting_body_email,
    "attendees":  attendees,
    "from_date": meeting_start,
    "to_date": meeting_end,
    "subject": meeting_subject_email
    }
    meeting_request_api= requests.request("POST", meeting_details_url, headers={'Authorization': f"{access_token}"}, data=meeting_details_payload)
    return meeting_request_api.text
Leave a Comment