Từ Văn Bản đến Phương Tiện Truyền Thông: Tự động hóa iMessages với AppleScript
By JoeVu, at: 10:42 Ngày 22 tháng 11 năm 2024
Thời gian đọc ước tính: __READING_TIME__ minutes


Từ Văn Bản Đến Phương Tiện Truyền Thông: Tự Động Hóa iMessages với AppleScript
Sau khi tự động hóa thành công tin nhắn văn bản bằng AppleScript, tôi quyết định đẩy mạnh giới hạn và khám phá việc gửi nội dung đa phương tiện — hình ảnh, tệp âm thanh, và thậm chí cả tin nhắn văn bản ngẫu nhiên. Hành trình mới này đã hé lộ cả những khả năng thú vị và những thách thức bất ngờ.
Bước 1: Lập Trình Script
Để gửi hình ảnh hoặc tệp âm thanh, AppleScript cần tương tác với cả ứng dụng Messages và hệ thống tệp macOS. Dưới đây là phiên bản đơn giản hóa của script tôi đã sử dụng ban đầu:
tell application "Messages"
set targetBuddy to "[email protected]"
set targetService to id of 1st service whose service type = iMessage
set theMessage to "Check this out!"
set theFile to POSIX file "/path/to/your/file.jpg"
send theFile to buddy targetBuddy of service id targetService
end tell
Đối với việc gửi tin nhắn văn bản ngẫu nhiên, tôi đã tạo một danh sách các tin nhắn được viết sẵn và sử dụng một bộ tạo số ngẫu nhiên đơn giản:
set randomMessages to {"Hello!", "How's it going?", "This is automated but still thoughtful!", "Random message time!"}
set theMessage to some item of randomMessage
Bước 2: Thành Công Ban Đầu
Khi tôi lần đầu tiên thử nghiệm script, các tệp được gửi hoàn hảo, và tôi thấy các tin nhắn đa phương tiện xuất hiện trong iMessage. Mọi thứ dường như hoạt động như mong đợi.
Bước 3: Bí Ẩn của Tin Nhắn Thất Bại
Tuy nhiên, sau khi chạy script vài lần nữa, tôi nhận thấy điều gì đó kỳ lạ. Trong khi tin nhắn văn bản được gửi liên tục, các tệp hình ảnh và âm thanh bắt đầu bị lỗi sau vài phút. Các tệp đơn giản là không được gửi, và không có lỗi nào được script báo cáo.
Bước 4: Khắc Phục Sự Cố
Sau một vài lần cố gắng gỡ lỗi, tôi phát hiện ra rằng việc thay đổi thư mục tệp đã giải quyết được vấn đề. Ban đầu, tôi đang lấy tệp từ thư mục Music
, nhưng chuyển sang Pictures
hoặc Downloads
đã khiến script hoạt động hoàn hảo trở lại. Điều này khiến tôi nghi ngờ rằng vấn đề liên quan đến quyền macOS, vì một số ứng dụng như Messages có thể hạn chế quyền truy cập vào các thư mục cụ thể.
Script Đã Cập Nhật
Đây là script đã được sửa đổi với thư mục tệp đã được chỉnh sửa:
tell application "Messages"
set targetBuddy to "[email protected]"
set targetService to id of 1st service whose service type = iMessage
set theFile to POSIX file "/Users/joe/Downloads/test_image.jpg" -- Thư mục đã cập nhật
send theFile to buddy targetBuddy of service id targetService
end tell
Thông Tin Về Quyền
Trải nghiệm này làm nổi bật một khía cạnh quan trọng của bảo mật macOS:
- Hộp cát và Quyền: Một số thư mục, như
Music
, có thể có thêm các hạn chế khi được truy cập bởi các ứng dụng hoặc script của bên thứ ba.
- Cách giải quyết: Sử dụng các thư mục cho phép hơn như
Pictures
hoặcDownloads
thường có thể giải quyết các vấn đề như vậy.
Các Bước Tiếp Theo
Quá trình tự động hóa tin nhắn đa phương tiện bằng AppleScript đã dạy cho tôi tầm quan trọng của việc hiểu quyền tệp và thích ứng với các ràng buộc hệ thống. Tiếp theo, tôi dự định:
- Khám phá việc chọn tệp động để có script tương tác hơn.
- Thử nghiệm kết hợp tin nhắn văn bản và đa phương tiện.
- Kiểm tra tích hợp với Automator để lập lịch trình các script này.
Kết Luận
Gửi nội dung đa phương tiện bằng AppleScript là một thử thách bổ ích. Mặc dù vấn đề quyền đã làm tăng thêm độ phức tạp, nhưng việc khắc phục nó đã giúp tôi hiểu sâu hơn về hoạt động bên trong của macOS. Nếu bạn đang bắt đầu tự động hóa bằng AppleScript, hãy nhớ: sự kiên trì là chìa khóa, và đôi khi giải pháp đơn giản như việc chọn đúng thư mục.
Nội dung đầy đủ của applescript ở đây
-- Định nghĩa địa chỉ email người nhận
set recipientEmail to "[email protected]"
-- Chỉ định đường dẫn đầy đủ đến tệp âm thanh
-- set audioFilePath to "/Users/joe/Pictures/2345.png"
set audioFilePath to "/Users/joe/Pictures/1.m4a"
--set audioFilePath to "/Users/joe/Pictures/1.mp3"
-- Danh sách các tin nhắn được định nghĩa sẵn
set messageList to {"Hello from the Glinteco", "This is fun script", "Play around with Glinteco"}
-- Chọn một tin nhắn ngẫu nhiên
set randomIndex to random number from 1 to (count messageList)
set randomMessage to item randomIndex of messageList
-- Đảm bảo tệp âm thanh tồn tại bằng Finder
set audioFile to POSIX file audioFilePath
tell application "Finder"
if not (exists audioFile) then
display dialog "Tệp âm thanh đã chỉ định không tồn tại." buttons {"OK"} default button "OK"
return
end if
end tell
-- Gửi iMessage với tin nhắn ngẫu nhiên và tệp âm thanh
tell application "Messages"
set targetService to 1st account whose service type = iMessage
set targetBuddy to participant recipientEmail of targetService
-- Gửi tin nhắn ngẫu nhiên trước
send randomMessage to targetBuddy
-- Tạm dừng để đảm bảo tin nhắn được gửi trước khi gửi tệp
delay 1
-- Gửi tệp âm thanh
send file audioFile to targetBuddy
end tell