はじめまして
最近Pythonを触るようになったのですが、ドコモの雑談対話APIを使って動かして見たいプログラミングがPython2のものだったので3に変換しているのですが、どうしてもエラーが出てしまうので質問させていただきました。
http://yu-write.blogspot.jp/2013/11/python-docomoapi.html
こちらのものをPython3で動かすために

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#Docomoの雑談対話APIを使ってチャットできるスクリプト


import sys
import urllib.request
import json
import os


APP_URL = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue'


class DocomoChat(object):
#Docomoの雑談対話APIでチャット

    def __init__(self, api_key):
        api_key = os.environ.get('DOCOMO_DIALOGUE_API_KEY', api_key)
        super(DocomoChat, self).__init__()
        self.api_url = APP_URL + ('?APIKEY=%s'%api_key)
        self.context, self.mode = None, None

    def __send_message(self, input_message='', custom_dict=None):
        req_data = {'utt': input_message}
        if self.context:
            req_data['context'] = self.context
        if self.mode:
            req_data['mode'] = self.mode
        if custom_dict:
            req_data.update(custom_dict)
        request = urllib.request(self.api_url, json.dumps(req_data))
        request.add_header('Content-Type', 'application/json')
        try:
            response = urllib.urlopen(request)
        except Exception as e:
            print (e)
            sys.exit()
        return response

    def __process_response(self, response):
        resp_json = json.load(response)
        self.context = resp_json['context'].encode('utf-8')
        self.mode    = resp_json['mode'].encode('utf-8')
        return resp_json['utt'].encode('utf-8')

    def send_and_get(self, input_message):
        response = self.__send_message(input_message)
        received_message = self.__process_response(response)
        return received_message


    def set_name(self, name, yomi):
        response = self.__send_message(custom_dict={'nickname': name, 'nickname_y': yomi})
        received_message = self.__process_response(response)
        return received_message


def main():
    chat = DocomoChat('api_key')
    resp = chat.set_name('あなたのニックネーム', 'ニックネームのヨミガナ')
    print ('相手  : %s'% resp)
    message = ''
    while message != 'バイバイ':
        message = raw_input('あなた : ')
        resp = chat.send_and_get(message)
        print ('相手  : %s'%resp)

if __name__ == "__main__":
    main()

このように調べながら少しづつ変更していき、APIも.bash_profileに入れたものを使えるようにできないかと試しているのですが、現状では、

$ python talk.py
Traceback (most recent call last):
  File "talk.py", line 71, in <module>
    main()
  File "talk.py", line 62, in main
    resp = chat.set_name('あなたのニックネーム', 'ニックネームのヨミガナ')
  File "talk.py", line 55, in set_name
    response = self.__send_message(custom_dict={'nickname': name, 'nickname_y': yomi})
  File "talk.py", line 33, in __send_message
    request = urllib.request(self.api_url, json.dumps(req_data))
TypeError: 'module' object is not callable

このようにTypeErrorがでてしまいます。
このエラーについても調べて「モジュールの名前.対象のクラス」にしたら良いとは分かったのですが、どの部分に対してこの変更を行ったら良いのかもわからず行き詰ってしまいました。
また、そもそもPython2で動かしたら良いのではとも思い行って見たのですが、動きはしたのですが文字化けしてしまいました。

質問の書き方があっているかもわかりませんし、すごく初歩的なところを質問しているのかもしれませんがどうぞ宜しくお願いします。