Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Email Functionality Issue: Unstable API Causing Authentication Process to Hang Indefinitely #79

Open
nicola-palmieri opened this issue Apr 5, 2023 · 2 comments

Comments

@nicola-palmieri
Copy link

nicola-palmieri commented Apr 5, 2023

Description:

We have been attempting to reactivate the email functionality in our Shiny application using the Microsoft365R API. However, we have encountered a persistent issue that we would appreciate your assistance with.

When the button to send emails is pressed, the application loops over users and sends the email. However, before sending the email to each user, an authentication page opens for logging in and displays a message that the page can now be closed. Occasionally, the API gets stuck on the authentication page and does not return to the app, causing the loading spinner to remain stuck indefinitely.

We have been unable to find a workaround or solution for this issue, and we suspect that it may originate from the API side. We would greatly appreciate any guidance or suggestions that you could provide to help us resolve this problem.

Thank you in advance for your assistance.

Code snippet:

# Email-sending function
send.email = function(user_from, email_to, email_subject, record) {
  
  show_modal_spinner(spin = "circle", text = "Sending email to " %+% email_to %+% "...")
  
  # Open Outlook connection
  outlook_conn = get_business_outlook()
  
  # Create email body containing a properly formatted version of the record
  record_rotated = sjmisc::rotate_df(record, rn = "Field") %>% tidyr::replace_na(list(V1 = ""))
  email_body = record_rotated %>% dplyr::mutate(Field = "<b>" %+% Field %+% ":</b>") %>% purrr::pmap_chr(paste, collapse = "") %>% paste(collapse = "<br><br>")
  
  # Send email
  email = compose_email(body = md(email_body), footer = md(""))
  email = outlook_conn$create_email(email, subject = email_subject, to = email_to)
  email$send()
}

# Main application code calling the email-sending function
if (table_obj$abbr %in% c("req", "reqh")) {

  # Extract email from current user and all data users
  current_user = db[["usr"]][["current_user"]]
  email_current_user = db[["usr"]]$content %>% dplyr::filter(User == current_user) %>% dplyr::pull(Email)
  email_data_users = db[["usr"]]$content %>% dplyr::filter(Type == "Data user") %>% dplyr::pull(Email)

  # Send email to current user and all data users with the current record
  users_email_to = c(email_current_user, email_data_users) %>% unique()

  if (grepl("add", id) == T & table_obj$abbr == "req") {
    email_subject = "New request from " %+% current_user
  }

  if (grepl("add", id) == T & table_obj$abbr == "reqh") {
    email_subject = "New request history record from " %+% current_user
  }

  if (grepl("edit", id) == T & table_obj$abbr == "req") {
    email_subject = "Update to request " %+% record$ID
  }

  if (grepl("edit", id) == T & table_obj$abbr == "reqh") {
    email_subject = "Update to request history record " %+% record$ID
  }

  send.multiple_emails(current_user, users_email_to, email_subject, record)

}
@hongooi73
Copy link
Collaborator

Authentication is handled by AzureAuth, so this isn't strictly speaking a Microsoft365R problem. I've noticed that AzureAuth can sometimes have issues with detecting the server messages when signing in; it hasn't been a problem for interactive use (since you can just try again) but for automated scripts I guess it would be different.

However, you shouldn't be authenticating for every email. I suggest moving the get_business_outlook() call outside the loop, that way you should run into this issue far less.

@nicola-palmieri
Copy link
Author

Thank you for your suggestion! I'm eager to see how this change improves the process.

@hongooi73 hongooi73 transferred this issue from Azure/Microsoft365R May 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants