Org-mode mailing list
 help / color / Atom feed
From: Bernt Hansen <>
Subject: Handling phone calls
Date: Sat, 09 Feb 2008 17:55:06 -0500
Message-ID: <> (raw)

Hi all,

I spent some time today tuning my org setup for handling incoming phone
calls.  As a contractor I need to clock time spent talking to customers
for billing purposes.  I used to (before this morning) use tags for
phone calls and I had a list of ONGOING tasks with :@phone: as a tag
but this wasn't very convenient to use.

Today I spent some time reviewing the remember documentation and I came
up with the following setup.  I thought I'd share it in case anyone else
finds it useful.


I have multiple clients and one org file per client.  Here is a sample

  -        - my personal tasks
  -     - tasks for client 1
  - - tasks for client 2
  -      - tasks for my company

When I need to create a new task I have the following
remember templates set up:

,----[ .emacs remember setup ]
| (custom-set-variables
|  '(org-remember-store-without-prompt t)
|  '(org-remember-templates
|    (quote (("todo" ?t "* TODO %?\n  %u" "~/org/" "Tasks")
| 	   ("client1" ?c "* TODO %?\n  %u" "~/org/" "Tasks")
| 	   ("otherclient" ?o "* TODO %?\n  %u" "~/org/" "Tasks")
| 	   ("norang" ?n "* TODO %?\n  %u" "~/org/" "Tasks"))))
|  '(remember-annotation-functions (quote (org-remember-annotation)))
|  '(remember-handler-functions (quote (org-remember-handler))))

To create a new task I just hit C-M-r and enter the appropriate template
and fill in the task details.

I set up a second set of templates for phone calls:

,----[ .emacs remember functions ]
| (setq my-phone-remember-templates
|       (quote (("client1" ?c "* Phone Call - %:name - %:company\n  :CLOCK-IN:%?" "~/org/" "Tasks")
| 	      ("otherclient" ?o "* Phone Call - %:name - %:company\n  :CLOCK-IN:%?" "~/org/" "Tasks")
| 	      ("norang" ?n "* Phone Call - %:name - %:company\n  :CLOCK-IN:%?" "~/org/" "Tasks")
| 	      ("phone call" ?p "* Phone Call - %? - \n  :CLOCK-IN:" "~/org/" "Tasks"))))
| (global-set-key (kbd "<f9> p") 'my-phone-call)
| (defun my-phone-call ()
|   (interactive)
|   (let ((org-remember-templates my-phone-remember-templates))
|     (bbdb (read-string "Who is calling: ") nil)
|     (other-window 1)
|     (org-remember)))
| (add-hook 'remember-mode-hook 'my-start-clock-if-needed)
| (defun my-start-clock-if-needed ()
|   (save-excursion
|     (goto-char (point-min))
|     (when (re-search-forward ":CLOCK-IN:" nil t)
|        (replace-match "")
|        (org-clock-in))))
| (require 'remember)
| (global-set-key (kbd "C-M-r") 'org-remember)
| (add-hook 'remember-mode-hook 'org-remember-apply-template)

Thanks Carsten for the my-start-clock-if-needed function which I stole
off the org-mode mailing list :)


So I'm happily clocking time on some task I'm working on and the phone
rings...  I pick up the phone, find out who I'm talking to and type
f9-p and enter a name at the prompt

Who is calling: Joe User

which looks up the person in my bbdb database and fills in the remember
template then I select the appropriate template for the client org file
I want to create the task in and it fills in something like this:

,----[ Remember buffer entry for phone calls ]
| ## Filing location: Select interactively, default, or last used:
| ##     C-u C-c C-c  to select file and header location interactively.
| ##         C-c C-c  "~/org/" -> "* Tasks"
| ## C-u C-u C-c C-c  "~/org/" -> "* Tasks"
| ## To switch templates, use `C-M-r'.  To abort use `C-c C-k'.
| * Phone Call - Joe User - Some Client Company
|   CLOCK: [2008-02-09 Sat 17:36]
|   <cursor is here, Start typing notes right away>

When I'm done with the call C-c C-c stops the clock and files the task
under * Tasks in whatever file I picked using the template above.
C-u C-u C-M-r jumps to the task and I can refile it to the appropriate
spot with C-c C-w.

I'm sure this can be improved upon but it's already a lot better than
what I had before.

Happy organizing!


             reply index

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-09 22:55 Bernt Hansen [this message]
2008-02-10  7:42 ` Carsten Dominik
2008-02-10 11:09   ` Bastien
2008-02-24  1:20 ` Nick Dokos
2009-11-13 19:11 ` Gregory J. Grubbs
2009-11-13 19:28   ` Bernt Hansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Org-mode mailing list

Archives are clonable:
	git clone --mirror list/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 list list/ \
	public-inbox-index list

Example config snippet for mirrors

Newsgroups are available over NNTP:

AGPL code for this site: git clone