def send_welcome_email_to_participant( participant_email: str, incident_id: int, db_session: SessionLocal ): """Sends a welcome email to the participant.""" # we load the incident instance plugin = plugin_service.get_active(db_session=db_session, plugin_type="email") if not plugin: log.warning("Participant welcome email not sent, not email plugin configured.") return incident = incident_service.get(db_session=db_session, incident_id=incident_id) message_kwargs = { "name": incident.name, "title": incident.title, "description": incident.description, "status": incident.status, "type": incident.incident_type.name, "type_description": incident.incident_type.description, "priority": incident.incident_priority.name, "priority_description": incident.incident_priority.description, "commander_fullname": incident.commander.individual.name, "commander_team": incident.commander.team, "commander_weblink": incident.commander.individual.weblink, "reporter_fullname": incident.reporter.individual.name, "reporter_team": incident.reporter.team, "reporter_weblink": incident.reporter.individual.weblink, "document_weblink": resolve_attr(incident, "incident_document.weblink"), "storage_weblink": resolve_attr(incident, "storage.weblink"), "ticket_weblink": resolve_attr(incident, "ticket.weblink"), "conference_weblink": resolve_attr(incident, "conference.weblink"), "conference_challenge": resolve_attr(incident, "conference.conference_challenge"), "contact_fullname": incident.commander.individual.name, "contact_weblink": incident.commander.individual.weblink, } faq_doc = document_service.get_incident_faq_document(db_session=db_session) if faq_doc: message_kwargs.update({"faq_weblink": faq_doc.weblink}) conversation_reference = document_service.get_conversation_reference_document( db_session=db_session ) if conversation_reference: message_kwargs.update( {"conversation_commands_reference_document_weblink": conversation_reference.weblink} ) notification_text = "Incident Notification" plugin.instance.send( participant_email, notification_text, INCIDENT_PARTICIPANT_WELCOME_MESSAGE, MessageType.incident_participant_welcome, **message_kwargs, ) log.debug(f"Welcome email sent to {participant_email}.")
def send_welcome_ephemeral_message_to_participant( participant_email: str, incident: Incident, db_session: SessionLocal ): """Sends an ephemeral message to the participant.""" # we load the incident instance plugin = plugin_service.get_active_instance( db_session=db_session, project_id=incident.project.id, plugin_type="conversation" ) if not plugin: log.warning("Incident welcome message not sent, not conversation plugin enabled.") return # we send the ephemeral message message_kwargs = { "name": incident.name, "title": incident.title, "description": incident.description, "status": incident.status, "type": incident.incident_type.name, "type_description": incident.incident_type.description, "priority": incident.incident_priority.name, "priority_description": incident.incident_priority.description, "commander_fullname": incident.commander.individual.name, "commander_team": incident.commander.team, "commander_weblink": incident.commander.individual.weblink, "reporter_fullname": incident.reporter.individual.name, "reporter_team": incident.reporter.team, "reporter_weblink": incident.reporter.individual.weblink, "document_weblink": resolve_attr(incident, "incident_document.weblink"), "storage_weblink": resolve_attr(incident, "storage.weblink"), "ticket_weblink": resolve_attr(incident, "ticket.weblink"), "conference_weblink": resolve_attr(incident, "conference.weblink"), "conference_challenge": resolve_attr(incident, "conference.conference_challenge"), } faq_doc = document_service.get_incident_faq_document(db_session=db_session) if faq_doc: message_kwargs.update({"faq_weblink": faq_doc.weblink}) conversation_reference = document_service.get_conversation_reference_document( db_session=db_session ) if conversation_reference: message_kwargs.update( {"conversation_commands_reference_document_weblink": conversation_reference.weblink} ) plugin.instance.send_ephemeral( incident.conversation.channel_id, participant_email, "Incident Welcome Message", INCIDENT_PARTICIPANT_WELCOME_MESSAGE, MessageType.incident_participant_welcome, **message_kwargs, ) log.debug(f"Welcome ephemeral message sent to {participant_email}.")
def send_incident_resources_ephemeral_message_to_participant( user_id: str, incident_id: int, db_session: SessionLocal ): """Sends the list of incident resources to the participant via an ephemeral message.""" # we load the incident instance plugin = plugin_service.get_active(db_session=db_session, plugin_type="conversation") if not plugin: log.warning("Incident resource message not sent, no conversation plugin enabled.") return incident = incident_service.get(db_session=db_session, incident_id=incident_id) message_kwargs = { "title": incident.title, "description": incident.description, "commander_fullname": incident.commander.individual.name, "commander_team": incident.commander.team, "commander_weblink": incident.commander.individual.weblink, "reporter_fullname": incident.reporter.individual.name, "reporter_team": incident.reporter.team, "reporter_weblink": incident.reporter.individual.weblink, "document_weblink": resolve_attr(incident, "incident_document.weblink"), "storage_weblink": resolve_attr(incident, "storage.weblink"), "ticket_weblink": resolve_attr(incident, "ticket.weblink"), "conference_weblink": resolve_attr(incident, "conference.weblink"), "conference_challenge": resolve_attr(incident, "conference.conference_challenge"), } if incident.incident_review_document: message_kwargs.update( {"review_document_weblink": incident.incident_review_document.weblink} ) faq_doc = document_service.get_incident_faq_document(db_session=db_session) if faq_doc: message_kwargs.update({"faq_weblink": faq_doc.weblink}) conversation_reference = document_service.get_conversation_reference_document( db_session=db_session ) if conversation_reference: message_kwargs.update( {"conversation_commands_reference_document_weblink": conversation_reference.weblink} ) # we send the ephemeral message plugin.instance.send_ephemeral( incident.conversation.channel_id, user_id, "Incident Resources Message", INCIDENT_RESOURCES_MESSAGE, MessageType.incident_resources_message, **message_kwargs, ) log.debug(f"List of incident resources sent to {user_id} via ephemeral message.")
def send_welcome_ephemeral_message_to_participant(participant_email: str, incident_id: int, db_session: SessionLocal): """Sends an ephemeral message to the participant.""" # we load the incident instance incident = incident_service.get(db_session=db_session, incident_id=incident_id) # we send the ephemeral message convo_plugin = plugins.get(INCIDENT_PLUGIN_CONVERSATION_SLUG) message_kwargs = { "name": incident.name, "title": incident.title, "status": incident.status, "type": incident.incident_type.name, "type_description": incident.incident_type.description, "priority": incident.incident_priority.name, "priority_description": incident.incident_priority.description, "commander_fullname": incident.commander.name, "commander_weblink": incident.commander.weblink, "document_weblink": incident.incident_document.weblink, "storage_weblink": incident.storage.weblink, "ticket_weblink": incident.ticket.weblink, "conference_weblink": incident.conference.weblink, "conference_challenge": incident.conference.conference_challenge, } faq_doc = document_service.get_incident_faq_document(db_session=db_session) if faq_doc: message_kwargs.update({"faq_weblink": faq_doc.weblink}) conversation_reference = document_service.get_conversation_reference_document( db_session=db_session) if conversation_reference: message_kwargs.update({ "conversation_commands_reference_document_weblink": conversation_reference.weblink }) convo_plugin.send_ephemeral( incident.conversation.channel_id, participant_email, "Incident Welcome Message", INCIDENT_PARTICIPANT_WELCOME_MESSAGE, MessageType.incident_participant_welcome, **message_kwargs, ) log.debug(f"Welcome ephemeral message sent to {participant_email}.")
def send_incident_resources_ephemeral_message_to_participant( user_id: str, incident_id: int, db_session: SessionLocal): """Sends the list of incident resources to the participant via an ephemeral message.""" # we load the incident instance incident = incident_service.get(db_session=db_session, incident_id=incident_id) message_kwargs = { "commander_fullname": incident.commander.name, "commander_weblink": incident.commander.weblink, "document_weblink": incident.incident_document.weblink, "storage_weblink": incident.storage.weblink, "ticket_weblink": incident.ticket.weblink, "conference_weblink": incident.conference.weblink, "conference_challenge": incident.conference.conference_challenge, } if incident.incident_review_document: message_kwargs.update({ "review_document_weblink": incident.incident_review_document.weblink }) faq_doc = document_service.get_incident_faq_document(db_session=db_session) if faq_doc: message_kwargs.update({"faq_weblink": faq_doc.weblink}) conversation_reference = document_service.get_conversation_reference_document( db_session=db_session) if conversation_reference: message_kwargs.update({ "conversation_commands_reference_document_weblink": conversation_reference.weblink }) # we send the ephemeral message convo_plugin = plugins.get(INCIDENT_PLUGIN_CONVERSATION_SLUG) convo_plugin.send_ephemeral( incident.conversation.channel_id, user_id, "Incident Resources Message", INCIDENT_RESOURCES_MESSAGE, MessageType.incident_resources_message, **message_kwargs, ) log.debug( f"List of incident resources sent to {user_id} via ephemeral message.")