Từ Văn Bản đến Phương Tiện Truyền Thông: Tự động hóa iMessages bằng 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

From Text to Media: Automating iMessages with AppleScript
From Text to Media: Automating iMessages with AppleScript

Sau khi tự động hóa thành công việc gửi tin nhắn văn bản bằng AppleScript, tôi quyết định đẩy 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: Tạo tập lệnh

 

Để 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. Đây là một phiên bản đơn giản hóa của tập lệnh 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


Để 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 tập lệnh, 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 về các tin nhắn thất bại

 

Tuy nhiên, sau khi chạy tập lệnh thêm một 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 gửi được, và không có lỗi nào được báo cáo bởi tập lệnh.

 

Bước 4: Khắc phục sự cố

 

Sau một vài lần thử 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 việc chuyển sang Pictures hoặc Downloads đã làm cho tập lệnh 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 của 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ể.

 

Tập lệnh đã được cập nhật

 

Đây là tập lệnh đã được sửa đổi với thư mục tệp được hiệu chỉnh:

 

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 cập nhật
    send theFile to buddy targetBuddy of service id targetService
end tell

 

Thông tin chi tiết 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 tập lệnh 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ặc Downloads 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 phương tiện với AppleScript đã dạy cho tôi tầm quan trọng của việc hiểu về quyền tệp và thích ứng với các ràng buộc của hệ thống. Trong tương lai, tôi dự định:

 

  • Khám phá việc lựa chọn tệp động để tạo tập lệnh tương tác hơn.
     
  • Thử nghiệm việc kết hợp tin nhắn văn bản và tin nhắn đa phương tiện.
     
  • Kiểm tra tích hợp với Automator để lập lịch trình cho các tập lệnh này.
     

 

Kết luận

 

Việc 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 đề về 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 với AppleScript, hãy nhớ rằng: 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.

 

Toàn bộ nội dung 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 xác định trước
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 tệp
    delay 1
    
    -- Gửi tệp âm thanh
    send file audioFile to targetBuddy
end tell

 

 

Tag list:
- AppleScript troubleshooting tips
- AppleScript random text messages
- Sending images via iMessage
- AppleScript file directory permissions
- AppleScript automation
- AppleScript iMessage permissions
- Automate iMessage media files
- macOS automation tools
- Send iMessage with AppleScript
- AppleScript multimedia messaging

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.