こんにちは。
新入社員の定番の役割、電話応対をPythonで効率化してみました。
電話を取り次ぐ相手が自席にいないのはよくあること。そのときは電話があったことをメールで伝えるわけですが、決まりきった文面を毎回書くのは実際面倒。ということで本文と件名を作るプログラムを書いてみました。
今回やること
- 電話があったことを伝える伝言メールの本文作成
- 過去に電話があった社名・名前を基に電話番号サジェスト
※ メール作成・送信は手動です('ω')
こんな感じのtxtファイルを出力します。
1行目が件名。それ以降が本文です。
TELmemo.txt
【伝言メモ】foobar様
hogeさん
お疲れ様です。【自分の名前】です。
fooのbar様よりお電話がありました。
折り返しをお願い致します。
TEL 000-000-000
以下、ソースコードです。
TELmemo.py
#coding:utf-8
import time
from datetime import datetime
import csv
import pandas as pd
import os.path
def existsLog():
# ログファイルが存在しない場合は作成する
if os.path.exists("telLog.csv") == False:
f = open('telLog.csv','w')
writer = csv.writer(f,lineterminator='\n')
header = []
header.append('To')
header.append('From')
header.append('incNm')
header.append('Tel')
header.append('Time')
writer.writerow(header)
f.close()
# 入力された名前, 会社名を持つログから電話番号をサジェストするメソッド
def suggestTelNo(df,nm,incNm):
telNo = ""
select = ""
for index,row in df.iterrows():
if row['From'] == nm and row['incNm'] == incNm:
print("もしかして、この電話番号? : ",end="")
print(row['Tel'])
print("y/n: ",end="")
select = input()
telNo = row['Tel']
break
if select == 'y':
return telNo
else:
return None
# ログを出力するメソッド
def mkLog(To,From,incNm,telNo):
time = datetime.now()
timeStr = time.strftime("%Y.%m.%d %H:%M:%S")
info = [To,From,incNm,telNo,timeStr]
with open('telLog.csv','a') as f:
writer = csv.writer(f,lineterminator='\n')
writer.writerow(info)
f.close()
if __name__ == "__main__":
f = open('TELmemo.txt','w')
ln1 = "\nお疲れ様です。【自分の名前】です。"
ln2_1 = "の"
ln2_2 = "様よりお電話がありました。"
ln3 = "折り返しをお願い致します。"
ln4 = "TEL "
print("---伝言メールの本文作ってくれるやつ---")
print("---伝言履歴---")
existsLog()
# 電話番号サジェスト用データフレーム
df = pd.read_csv('telLog.csv',encoding='UTF-8')
del df['Time']
# 伝言履歴を表示する
print(df)
print("\n※ 名前の入力は敬称略。")
print("誰宛て?:",end="")
to = input()
print("どこから?")
print("社名:",end="")
incNm = input()
print("名前:",end="")
nm = input()
ln2 = incNm + ln2_1 + nm + ln2_2
# 入力された名前, 会社名を持つログから電話番号をサジェストする処理
tel = suggestTelNo(df,nm,incNm)
# 初めて掛かってきた場合は電話番号を入力
if tel is None:
print("TEL:",end="")
tel = input()
ln4 = ln4 + tel
# 過去に掛かってきている場合は電話番号を表示
else:
print("TEL:" + tel)
ln4 = ln4 + tel
# ログを出力
mkLog(to,nm,incNm,tel)
# 件名を作成
sub = "【伝言メモ】" + incNm + nm + "様" + '\n'
# 本文に入れる文言を分割・格納する
msg = (sub,to+"さん",ln1,ln2,ln3,ln4)
# 本文を1行ずつtxtファイルに書込み・画面に出力
for line in msg:
print(line)
f.write(line + '\n')
f.close()
# 3秒間だけ待ってやる(内容確認のため)
time.sleep(3)
exit()