Dear @Minh Vu
I am happy to assist you with your questions regarding sharing Room Resource calendars with external users in Microsoft 365.
Question 1: Is the "Add from Directory" option only available on Work or School accounts?
Yes. The "Add from Directory" option is exclusively available to Work or School accounts (Exchange Online / Microsoft 365 Business or Enterprise). Personal Microsoft accounts (such as @outlook.com, @hotmail.com, or @live.com) do not connected to an organizational Global Address List (GAL) / Directory, so they only have access to personal contacts.
Question 2: Can we share a Room Resource as long as the external user has a work account?
Yes, but with specific administrative requirements. An external user with a work or school account can view room availability or reserve room resources, provided your tenant administrator configures Exchange Online correctly.
By default, Room Resources drop external booking requests to prevent unauthorized access. To enable sharing or external booking, the following conditions must be met:
Step 1: Tenant External Calendar Sharing Settings
The Microsoft 365 Global Administrator must allow external calendar sharing in the admin portal:
Navigate to Microsoft 365 Admin Center > Settings > Org settings > Services > Calendar.

Enable "Let your users share their calendars with people outside of your organization who have Office 365 or Exchange". 
Please refer to this document: Share Microsoft 365 calendars with people outside your organization
Step 2: Exchange Online PowerShell Configuration (for direct booking/processing)
If you want external users to invite the Room Resource directly in meeting requests, an administrator must update the Room's CalendarProcessing settings via Exchange Online PowerShell:
Set-CalendarProcessing -Identity "******@yourdomain.com" -ProcessExternalMeetingMessages $true
Note: Setting -ProcessExternalMeetingMessages $true enables the room to process and accept/decline meeting invites sent directly from external email addresses.
Please refer to this document about step by step code: Set-CalendarProcessing
Step 3: Sharing the Room Calendar Directly
If external users need to view the room's schedule/free-busy status in Outlook:
- Assign an internal user Full Access or Delegate rights to the Room Resource.
- Have that delegate open the Room's calendar via Outlook on the web (Open another mailbox).
- Share the Room calendar directly with the external user's email address and set the desired permission level (e.g., Can view when I'm busy or Can view all details).
Please refer to this blog about same your question: Sharing Office 365 Room's availability to external users
Please let me know if you need assistance with specific PowerShell commands or setting permissions for your resource mailboxes.
If the answer is helpful, please click "Yes" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in the forum document to enable e-mail notifications if you want to receive the related email notification for this thread.